3.7.2 by sh
3.7.2. Bean Validation Provider 구성
스프링은 Bean Validation API를 완벽하게 지원합니다. 여기에는 JSR-303 또는 JSR-349 Bean Validation Provider를 스프링 빈으로서 부트스트랩 하기 위한 편리한 지원이 포함됩니다. 이를 통해 응용 프로그램에서 유효성 검사가 필요한 어느 곳에서든지 javax.validation.ValidatorFactory
또는 javax.validation.Validator
를 주입할 수 있습니다.
다음 예제와 같이 LocalValidatorFactoryBean
을 사용하여 기본 Validator를 스프링 빈으로 구성할 수 있습니다.
앞의 예제의 기본 구성은 기본 부트스트랩 메커니즘을 사용하여 초기화하기 위해 빈 유효성 검사를 트리거 합니다. Hibernate Validator와 같은 JSR-303 또는 JSR-349 Provider는 클래스 패스에 있을 것으로 예상되며 자동으로 감지됩니다.
Validator 주입
LocalValidatorFactoryBean
은 스프링의 org.springframework.validation.Validator
뿐만 아니라 javax.validation.ValidatorFactory
와 javax.validation.Validator
를 모두 구현합니다. 이러한 인터페이스 중 하나에 대한 참조를 Validation 로직을 호출해야하는 빈에 삽입할 수 있습니다.
다음 예제와 같이 Bean Validation API를 직접 사용하려는 경우 javax.validation.Validator
에 대한 참조를 삽입할 수 있습니다.
다음 예제와 같이 빈이 스프링 Validation API를 필요로 한다면 org.springframework.validation.Validator
에 대한 참조를 삽입할 수 있습니다.
사용자 정의 제약 조건 구성
각 빈 유효성 검증 제약 조건은 다음의 두 부분으로 구성됩니다. “제약 조건 및 구성 가능한 속성들을 선언하는 @Constraint
어노테이션”. “제약 조건의 동작을 구현하는 javax.validation.ConstraintValidator
인터페이스의 구현”.
선언과 구현을 연결하기 위해 각 @Constraint
어노테이션은 해당하는 ConstraintValidator
구현 클래스를 참조합니다. 런타임 시 ConstraintValidatorFactory
는 도메인 모델에서 Constraint 어노테이션이 발생할 때 참조된 구현을 인스턴스 화합니다.
기본적으로 LocalValidatorFactoryBean
은 스프링을 사용하여 ConstraintValidator
인스턴스를 생성하는 SpringConstraintValidatorFactory
를 구성합니다. 이를 통해 사용자 정의 ConstraintValidators
는 다른 스프링 빈처럼 의존성 주입의 이점을 얻을 수 있습니다.
다음 예제는 의존성 주입을 위해 스프링을 사용하는 관련 ConstraintValidator
구현이 따르는 사용자 정의 @Constraint
선언을 보여줍니다.
앞의 예제에서 볼 수 있듯이, ConstraintValidator
구현은 다른 스프링 빈과 마찬가지로 @Autowired
를 가질 수 있습니다.
스프링 기반 메소드 유효성 검사
다음과 같이 Bean Validation 1.1에서 지원되는 메소드 유효성 검사 기능(그리고 사용자 정의 확장 기능, 또한 Hibernate Validator 4.3에 의해)을 MethodValidationPostProcessor
빈 정의를 통해 스프링 컨텍스트에 통합할 수 있습니다.
스프링 기반 메소드 유효성 검사를 받기 위해서는 모든 대상 클래스에 스프링의 @Validated
어노테이션을 추가해야 합니다. Hibernate Validator와 Bean Validation 1.1 Provider의 설치에 대한 자세한 정보는 MethodValidationPostProcessor
javadoc를 참고하십시오. (옵션으로, 사용할 Validation 그룹을 선언할 수도 있습니다)
추가 구성 옵션
대부분의 경우에는 기본 LocalValidatorFactoryBean
구성으로 충분합니다. 메시지 보간에서 순회 해석에 이르기까지 다양한 빈 유효성 검증 구조에 대한 여러 가지 구성 옵션이 있습니다. 이러한 옵션에 대한 자세한 내용은 LocalValidatorFactoryBean
javadoc javadoc을 참조하십시오.
Last updated
Was this helpful?