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
빈 정의를 통해 스프링 컨텍스트에 통합할 수 있습니다.
추가 구성 옵션
Last updated
Was this helpful?