• 카테고리

    질문 & 답변
  • 세부 분야

    백엔드

  • 해결 여부

    해결됨

springframework validator 질문

20.08.28 22:14 작성 조회수 163

0

안녕하세요.

덕분에 많이 배우고 있습니다. validator를 bean으로 등록해서 입력 검증을 구현하셨는게 인상적이네요.

제가 기존에 알고있던 validator를 구현하는 방식은 Validator 인터페이스를 구현한 클래스를 생성한 후 WebMvcConfigurer.getValidator 메소드를 오버라이딩 하는 방법과 controller 클래스에 @InitBinder 에노테이션이 선언된  메소드에서 WebDataBinder.addValidator 호출 하는 방법 두가지를 알고 있습니다.

// global validator 등록
class MvcConfig implement WebMvcConfigure {
   @Override
   public Validator getValidator() {
      return new EventValidator();
   }
}

// local validator 등록
@RestController
class EventController {
   @InitBinder
   public void initBinder(WebDataBinder binder) {
      binder.addValidator(new EventValidator());
   }
}

하지만 첫번째 방법의 경우 다른 커맨드 객체를 검증하기 어려운 단점이 있고 두번째 방법은 요청 메소드가 호출될때마다 validator가 매번 생성되는 것으로 알고 있습니다.

혹시 강사님은 custom validation을 구현할때 3가지 방식 중 어떤 방식을 선호하고 왜 선호하는지 알 수 있을까요?

감사합니다.

답변 2

·

답변을 작성해보세요.

3

보통은 validator가 특정 전역적으로 쓰이기 보다는 특정 도메인 관련해서 쓰이는 경우가 많아서 저는 여기서 보여드린대로 빈으로 등록해서 필요할 곳에서 주입 받아서 직접 쓰거나, 아니면 특정 컨트롤러 내부에서 initBinder를 통해 등록해서 쓰는데요. 가능하면 initBinder에 묶어서 쓰는게 더 편하더라구요. 아무래도 직접 validator를 호출해야 하는 코드도 줄어드니까요.

0

감사합니다!