프레임워크/Spring

[Spring] validation 체크 - 2

여기니 2022. 4. 20. 13:44

이번에는 비밀번호체크 하는 어노테이션을 만들어서 validation 체크를 해볼것이다.

 

우선 pom.xml에 다음 의존성을 추가한다.

<dependency>
   <groupId>org.hibernate</groupId>
   <artifactId>hibernate-validator</artifactId>
   <version>6.0.10.Final</version>
</dependency>
package com.example.validatingforminput;

import javax.validation.Constraint;
import javax.validation.Payload;
import java.lang.annotation.*;

@Documented
@Constraint(validatedBy = PasswordValidator.class)
@Target(ElementType.FIELD)
@Retention(RetentionPolicy.RUNTIME)
public @interface PasswordCheck {
    String message() default "영어 소문자 길이는 4~12만 허용합니다.";
    Class<?>[] groups() default {};
    Class<? extends Payload>[] payload() default {};
}

 

import org.springframework.util.StringUtils;

import javax.validation.ConstraintValidator;
import javax.validation.ConstraintValidatorContext;

public class PasswordValidator implements ConstraintValidator<PasswordCheck, String> {
    @Override
    public void initialize(PasswordCheck constraintAnnotation) {
        ConstraintValidator.super.initialize(constraintAnnotation);
    }

    @Override
    public boolean isValid(String s, ConstraintValidatorContext constraintValidatorContext) {
        String onlyEng = "^[a-z]*$";
        //영어 소문자만 길이는 4~12만 허용합니다.
        return StringUtils.hasText(s) && s.matches(onlyEng) && (s.length() > 4) &&(s.length() < 12 );
    }
}

PasswordCheck 어노테이션을 만들어 원하는 문구를 작성하고 체크할 유효성을 PasswordValidator도 만든다.

 

체크할 필드에 선언을 하고 사용하면된다.

이런식으로 사용 가능하다. 

 

참고

https://www.baeldung.com/spring-mvc-custom-validator