문제상황
- @Valid, @Validated 동시에 사용하며, 서로 다른 Exception 발생하여 예외에 대한 구분이 필요했음
- 예) MethodArgumentNotValidException, ConstraintViolationException 예외 발생
해결방안
- 예외가 발생하는 구간 및 처리 과정을 파악하여 적절한 예외에 대해 응답
시도
- @Valid
- 모든 요청은 프론트 컨트롤러인 디스패처 서블릿을 통해 컨트롤러로 전달하게 됨
- Json 메세지를 객체로 변환해주는 ArgumentResolver 구현체를 통해 수행
- 그 과정에서 유효성 검사를 진행하게 됨
- @Validated
- 클래스 레벨에 선언된 곳은 AOP의 어드바이스 또는 인터셉터가 등록됨
- 해당 클래스의 메소드들이 호출될 때 요청을 가로채어 유효성 검사를 진행하게 됨
결과
- ArgumentResolver 처리인지, AOP 기반 처리인지 확인
- 적절한 위치에 @Valid, @Validated 적용 후 예외를 구분하여 처리
- 위치와 예외를 적절하게 처리하여 예상 가능한 서비스와 신뢰 및 안정성을 향상