13.3.2 ConstraintValidator 인터페이스의 구현체 생성
사용자 정의 애너테이션의 유효성 검사 클래스는 javax.validation.ConstraintValidator 인터페이스의 구현체를 생성합니다. 해당 구현체를 생성하려면 initialize()와 isValid() 메서드를 구현해야 합니다.
▼ 표 13-6 ConstraintValidator 인터페이스의 메서드
유형 |
설명 |
void initialize(A constraintAnnotation) |
사용자 정의 애너테이션과 관련 정보를 읽어 초기화합니다. 이때 A는 사용자 정의 제약 사항을 설정합니다. |
boolean isValid(T value, ConstraintValidatorContext context) |
유효성 검사 로직을 수행합니다. value는 유효성 검사를 위한 도메인 클래스의 변수 값이고, context는 제약 사항을 평가하는 컨텍스트입니다. |
다음 MemberIdValidator 클래스는 앞서 살펴본 사용자 정의 애너테이션 @MemberId를 생성할 때 @Constraint의 validatedBy 요소에 설정한 유효성 검사 클래스 예입니다. 이 클래스는 ConstraintValidator 인터페이스의 구현체입니다.
ConstraintValidator 인터페이스의 구현체 생성 예
package com.springmvc.chap13;
import javax.validation.ConstraintValidator;
import javax.validation.ConstraintValidatorContext;
public class MemberIdValidator implements ConstraintValidator<MemberId, String> { ➊
private Member member;
public void initialize(MemberId constraintAnnotation) { ➋
}
public boolean isValid(String value, ConstraintValidatorContext context) { ➌
if (value.equals("admin")) {
return false;
}
return true;
}
}