- Spring MVC 마스터하기 Validation 62022년 05월 26일
- starryeye
- 작성자
- 2022.05.26.오후08:55
BindingResult 의 reject, rejectValue 메서드 사용에 의해 검증 로직이 한층 가벼워 졌다...
하지만, 컨트롤러의 입장에서 보면 아직도 코드가 길고 복잡하다...
위와 같이 하나의 메서드 컨트롤러에서 검증에서 성공했을때의 로직(컨트롤러에 진짜 들어가야할 로직) 보다..
검증하는 로직이 대부분을 차지한다..
이를 해결해보자..
Validator
스프링이 제공하는 검증을 위한 인터페이스이다.
Validator 인터페이스 supports : 파라미터로 들어오는 clazz가 개발자가 의도한 검증할 클래스 타입인지 확인하는 메서드
validate : 개발자가 의도한 검증 로직이 들어간다.
(참고로 validate의 파라미터 중, Errors는 BindingResult의 부모 클래스이다.)
인터페이스에 대해 알아보았으니 직접 구현해보자.
@Component : 컴포넌트 스캔에 의해 스프링컨테이너에 스프링 빈으로 등록된다.
supports : 메서드를 오버라이딩 하여 개발자가 검증하고 싶은 클래스타입(Item.class)이 맞는건지 확인 하는 로직이 들어감
validate : 컨트롤러에 있었던 검증로직을 다 들고 왔다. BindingResult 의 부모인 Errors에 reject, rejectValue 메서드로 개발자 검증 에러를 넣을 수 있도록 해준다.
컨트롤러를 재구성 해보자
생성한 Validator를 컨트롤러의 맴버 변수로 등록한다.
(@RequiredArgsConstructor 어노테이션을 사용하여 final 키워드가 붙은 변수를 생성자 주입이 되도록 해준다.)
메서드 컨트롤러의 검증할 단계에서 주입받은 itemValidator의 validate 메서드를 호출해준다.
파라미터로 요청에서 넘어온 개발자가 검증할 객체와 BindingResult 객체를 넘겨준다.
결론..
스프링이 제공하는 Validator 인터페이스를 활용하여 컨트롤러에서 검증로직을 뺄 수 있었다..
'Spring > MVC' 카테고리의 다른 글
Spring MVC 마스터하기 Validation 8 (0) 2022.05.26 Spring MVC 마스터하기 Validation 7 (0) 2022.05.26 Spring MVC 마스터하기 Validation 5 (0) 2022.05.17 Spring MVC 마스터하기 Validation 4 (0) 2022.05.17 Spring MVC 마스터하기 Validation 3 (0) 2022.05.08 다음글이전글이전 글이 없습니다.댓글