Spring-boot: RestControllerAdvice에서 RestController의 예외만 받기
RestControllerAdvice에 ExceptionHandler를 정의하면 RestController에서 발생한 Execption만 처리하고,
ControllerAdvice에 ExceptionHandler를 정의하면 Controller에서 발생한 Exception만 처리하는 줄 알았다.
RestController와 RestControllerAdvice의 코드를 확인해보면
@RestController
= @Controller
+ @ResponseBody
,
@RestControllerAdvice
= @ControllerAdvice
+ @ResponseBody
일 뿐이다.
즉, 따로 설정을 하지 않으면, Controller에서 발생한 Exception을 RestControllerAdvice에서 처리할 수 있다.
마찬가지로 RestController에서 발생한 Exception을 ControllerAdvice에서 처리할 수 있다.
처음 의도한대로 RestController의 Exception만 처리하려면
@RestControllerAdvice(annotations = RestController.class)
어노테이션을 붙여주면 된다.
(ControllerAdvice도 마찬가지)
참고: https://woowacourse.github.io/javable/post/2020-07-28-global-exception-handler/