@ControllerAdvice

데일리·2024년 11월 13일
0

TIL

목록 보기
6/16
post-thumbnail

우리가 개발을 하다보면 예외처리 부분에 @ControllerAdvice라는 어노태이션이 붙은것을 볼 수 있다. 해당 어노테이션이 무슨 역할을 하는지 알아보자

@ControllerAdvice란

@ControllerAdvice는 Spring에서 모든 컨트롤러에 적용할 규칙이나 예외처리를 한곳에서 관리할 수 있게 해주는 도구라고 생각하면 된다.

컨트롤러에서 어떤 문제가 생기면 그걸 각 컨트롤러마다 따로따로 처리하는 것이 아니라 @ControllerAdvice예 예외 처리를 모아두면 그곳에서 자동으로 처리해준다.

예를 들면

  • 데이터가 비어 있을 때나 잘못된 값이 입력되었을 때 특정 오류 메시지를 보내야한다면, 이 로직을 모든 컨트롤러에 추가할 필요없이 @ControllerAdvice에 한번만 작성하면된다!

이러한 @ControllerAdivce는 내부에 @Component가 포함되어 있어 컴포넌트 스캔과정에 빈으로 등록이 되어 진다

@RestControllerAdvice

@RestControllerAdvice는 내부에 @ResponseBody를 포함하여 @ExcepionHandler와 함께 사용될 때에 응답을 Json 형태로 내려주는 특징을 지닌다.

@ControllerAdvice VS @Advice

자칫 용어때문에 advice와 햇갈리기 쉽다. 하지만 두 애너테이션은 전혀 다른 관점의 애너테이션이라는 것을 알아야한다.

@ControllerAdvice

  • 주로 Spring MVC에서 사용
  • 전역 예외처리나 공통 기능을 여러 컨트롤러에 적용하는 목적
  • 컨트롤러의 예외 처리를 중앙화하여 코드 중복을 줄이는데 목적

@Advice

  • Spring AOP에서 사용
  • Aspect에 포함된 행동 정의로 메소드 실행 전, 후, 또는 예외 발생 시 특정 로직을 추가할 수 있다.

따라서 @ControllerAdvice는 컨트롤러 전역 설정을 위한 어노테이션이고 @Advice는 특정 시점에 실행될 로직을 정의하는 개념으로 서로 다른 용도로 사용된다.

profile
하루에 한편 씩 읽기 좋은 테크 로그

0개의 댓글