• 카테고리

    질문 & 답변
  • 세부 분야

    백엔드

  • 해결 여부

    미해결

EventValidator 질문이 있습니다.

22.02.24 17:25 작성 조회수 190

0

안녕하세요.

다름이 아니라 EventValidator 에서 implement Validator 를 쓰는것과 안쓰는것 차이를 잘 모르겠습니다.

 

감합니다.

답변 1

답변을 작성해보세요.

2

안녕하세요. 좋은 질문 감사합니다.

Validator 인터페이스 규약을 따를 것인가(A) 아니면 커스텀한 Validator를 만들것인가(B) 차이가 있습니다. A를 선택한다면 인터페이스에 따라 validate()와 support()를 구현해야 합니다. 어느 한 종류(또는 그 하위 타입)에 대한 검증 메소드 진입점이 하나 뿐입니다. B는 얼마든지 마음대로 설계할 수 있습니다. 원한다면 여러 타입에 대한 검증을 지원할 수도 있고, 검증용 메소드도 여러개를 만들어 쓸 수 있죠.

A를 선택했을 때의 장점은 스프링 기반 시설에서 정해둔 규약이라, 스프링 프레임워크가 제공하는 인프라에 연동해서 사용할 용도라면 A를 선택하는게 좋을 겁니다. 가령 WebDataBinder에 Validator를 등록해서 쓸 수 있는데 그렇게 해두면 B를 사용할 때와는 달리 명시적으로 validator를 호출하지 않더라도 스프링 MVC 내부에서 바이딩한 이후에 WebDataBinder에 등록되어있는 검증기를 적용해서 검증 처리를 해줍니다. 대신 그만큼 정해진 규칙에 따르고 해당 규칙대로 동작하리라는 것을 이해하고 있어야 그렇게 암묵적으로 또는 자동적으로 처리되는 로직을 잘 활용할 수 있겠죠.

B를 선택했을 때는 우리가 직접 컨트롤 해야 합니다. WebDataBinder에 등록해서 쓰는게 아니라, 의존성 주입으로 Validator를 주입받아서 직접 검증이 필요한 순간에 코딩을 해서 Validator를 써야 하는거죠. 저는 이 방법도 선호하는데, 무엇보다 "명시적"으로 언제 어느 메소드를 사용해서 검증을 하는지 코드가 잘 보이기 때문이죠.

A랑 B랑 분명히 기술적인 차이가 있지만 어느것이 어느것보다 나은 선택이다 그런건 없습니다. 상황이나 취향에 맞게 쓰시면 됩니다.

감사합니다.

조재연님의 프로필

조재연

질문자

2022.02.25

자세한 설명 감사합니다~