Validator
Validator 인터페이스를 구현한 객체를 사용하는 방법.
컨트롤러 메소드 내의 코드
Validator를 컨트롤러에서 DI받아 두고 각 메소드에서 필요에 따라 직접 validate() 메소드를 호출하는 방법.@Valid를 이용한 자동검증
JSR-303 Valid 애노테이션을 사용하는 방법. @Valid 애노테이션을 차용했을 뿐 내부적으로는 스프링의 Validator가 사용된다.
컨트롤러 메소드 파라미터에 @Valid를 추가한다.
WebDataBinder는 @InitBinder 메소드에서 등록된 Validator를 이용해 모델을 검증한다.서비스 계층 오브젝트에서의 검증
Validator를 서비스 계층에서 DI받아 사용하는 방법.서비스 계층을 활용하는 Validator
검증 관련된 서비스 계층 로직을 호출하고 다시 본 메소드를 호출하는 방법.
비즈니스 로직이 반영되는 검증 작업은 세 번째, 네 번째 중 하나 적용하면 된다. 네 번째 방법이 좀 더 스프링다운 방법이다.
JSR-303 빈 검증 기능
표준 스펙으로 인증받은 JSR-303 빈 검증 방식도 스프링에서 사용할 수 있다.
LocalValidatorFactoryBean은 스프링의 Validator처럼 사용할 수 있게 해주는 일종의 어댑터다.
LocalValidatorFactoryBean을 빈으로 등록 후 컨트롤러에서 Validator타입으로 DI받아서 @InitBinder에서 WebDataBinder에 설정하거나 코드에서 직접 Validator처럼 사용할 수 있다.
모델 객체 프로퍼티에 @NotNull, @Min(0) 같이 애노테이션 설정을 하는 방법