▶️상황
현재 @ControllerAdvice를 통해 custom 한 ErrorResponse 를 응답하고 있다. 그런데 Spring MVC Exception 은 내가 정의한 custom 한 ErrorResponse 를 응답하지 않는다. API 일관성을 지키기 위해서는 Spring MVC Exception 또한 내 custom한 ErrorResponse 를 응답해야한다.
▶️ResponseEntityExceptionHandler가 없는 경우
매개변수가 필요한 HTTP 요청 시에 요청 매개 변수가 누락된 경우 예시를 들어보자.
아래는 ResponseEntityExceptionHandler가 처리하는 예외들이다.
기본적인 응답이 나오게 된다. 이러면 다른 Exception 들은 내가 커스터마이징한 응답 메세지가 나오지만, Spring MVC Exception은 그러지 않는다.
▶️ResponseEntityExceptionHandler 사용하는 경우
매개 변수가 누락된 경우 예외 처리를 하려면 그에 해당하는 함수를 오버라이딩 해서 재정의 해야한다.
아래와 같은 Exception에 대해 예외처리를 하고 있다.
똑같이 매개변수가 필요한 HTTP 요청 시에 요청 매개 변수를 누락시키고 보내보자.
커스터마이징한 응답 메세지가 나오게 된다.
▶️장점
- 일관성 있는 응답 : 클라이언트가 예외에 대해 어떤 응답을 받을 지 미리 알 수 있다.
- 코드 중복 최소화 : 모든 예외 처리 코드를 한 곳에서 관리할 수 있다.
- 커스터마이징 : 예외 처리 로직을 모두 커스터마이징할 수 있다.
이러한 장점들은 개발자가 일관된 API를 구축하고 유지할 수 있도록 도와준다.
'개발 이야기 > Spring' 카테고리의 다른 글
Spring WebClient 적용기 (1) | 2024.04.26 |
---|---|
Spring paging count query 조건 (0) | 2024.03.29 |
Spring ThreadPoolTaskExecutor @Async 비동기 (1) | 2024.02.20 |
Spring Profile 개발 서버와 운영 서버 분리, Environment Configurations (0) | 2024.02.03 |