우리가 개발을 하다보면 예외처리 부분에 @ControllerAdvice라는 어노태이션이 붙은것을 볼 수 있다. 해당 어노테이션이 무슨 역할을 하는지 알아보자
@ControllerAdvice는 Spring에서 모든 컨트롤러에 적용할 규칙이나 예외처리를 한곳에서 관리할 수 있게 해주는 도구라고 생각하면 된다.
컨트롤러에서 어떤 문제가 생기면 그걸 각 컨트롤러마다 따로따로 처리하는 것이 아니라 @ControllerAdvice예 예외 처리를 모아두면 그곳에서 자동으로 처리해준다.
예를 들면
이러한 @ControllerAdivce는 내부에 @Component가 포함되어 있어 컴포넌트 스캔과정에 빈으로 등록이 되어 진다
@RestControllerAdvice는 내부에 @ResponseBody를 포함하여 @ExcepionHandler와 함께 사용될 때에 응답을 Json 형태로 내려주는 특징을 지닌다.
자칫 용어때문에 advice와 햇갈리기 쉽다. 하지만 두 애너테이션은 전혀 다른 관점의 애너테이션이라는 것을 알아야한다.
@ControllerAdvice
@Advice
따라서 @ControllerAdvice는 컨트롤러 전역 설정을 위한 어노테이션이고 @Advice는 특정 시점에 실행될 로직을 정의하는 개념으로 서로 다른 용도로 사용된다.