재밌다 필요한 검증을 어노테이션을 만들어 사용할 수 있다니
내가 필요한 것 : null이여도 되고 핸드폰자리 11자리만 체크하는 것
시도해본 것 : @Pattern(regexp = "^[\d]{11}+$")
@Pattern 어노테이션은 null 을 체크하기 때문에 내가 필요로 하는 것에 부합하지 않았다.....

그리하여 어쩔 수 없이 만들어 보게 된 어노테이션... 근데 좀 재밌었다 ㅎㅎ
총 두개의 class를 만든다.
1. 어노테이션으로 만들어 줄 인터페이스
2. 만들 어노테이션의 구현체

@Constraint(validatedBy = MobileNoValidator.class) // 구현체 class
@Documented
@Retention(RetentionPolicy.RUNTIME)
@Target({ElementType.FIELD})
public @interface MobileNo {
String message() default "휴대폰 번호 자리 오류";
Class<?>[] groups() default {};
Class<? extends Payload>[] payload() default {};
}
MobileNo.java
public class MobileNoValidator implements ConstraintValidator<MobileNo,String> {
@Override
public void initialize(MobileNo constraintAnnotation) {
}
@Override
public boolean isValid(String value, ConstraintValidatorContext context) {
return StringUtils.isEmpty(value) || value.matches("^[\\d]{11}+$");
}
}
MobileNoValidator.java
실제 validation 할 내용을 이 구현체 클래스에서 정의해주면 된다.

'TIL' 카테고리의 다른 글
git clone 할 때 에러 : Support for password authentication was removed on (0) | 2023.08.27 |
---|---|
[TIL] stream을 사용하여 코드 간결하게 하기.... (0) | 2023.08.15 |
[TIL] Spring validation annotation (0) | 2023.08.01 |
[TIL] 프로세스의 끝부분에서 에러가 났는데 그게 하나의 트랜잭션이라서... (0) | 2023.07.27 |
[TIL] 서버에서 배포 시에 실패 Exit 뜰 때와 jdk버전차이 확인하기 (0) | 2023.07.13 |