본문 바로가기
IT

Spring @ControllerAdvice 완전 정리

by urosie 2025. 12. 15.
반응형

1. 개요

@ControllerAdvice는 컨트롤러 전역에서 발생하는 예외, 모델, 바인딩 등을 한 곳에서 처리하기 위한 스프링 어노테이션이다.
실무에서는 대부분 전역 예외 처리용으로 사용된다.


2. 주요 용도

  1. 전역 예외 처리
    • 모든 컨트롤러에서 발생하는 예외를 한 곳에서 잡아서 일관된 응답 반환
     
    @ControllerAdvice public class GlobalExceptionHandler { @ExceptionHandler(Exception.class) public ResponseEntity<String> handleAll(Exception ex) { return ResponseEntity.status(HttpStatus.INTERNAL_SERVER_ERROR) .body("서버 오류: " + ex.getMessage()); } }
  2. 모델 데이터 전역 적용
    • 모든 뷰(Controller)에서 공통으로 필요한 데이터 주입
     
    @ModelAttribute("currentUser") public User addUser() { return getCurrentUser(); }
  3. 바인딩/검증 처리
    • @InitBinder로 모든 컨트롤러 요청의 바인딩/검증 설정 가능

3. 동작 순서

  • 컨트롤러에서 예외 발생 → 해당 컨트롤러 @ExceptionHandler가 먼저 처리
  • 컨트롤러 단위 핸들러 없으면 → @ControllerAdvice 전역 핸들러 호출
  • 즉, “Controller 예외 처리 > ControllerAdvice 전역 처리” 순서

4. 실무 팁

  • 서비스 계층에서 예외를 던지고, 컨트롤러는 try-catch 없이 호출만
  • 전역 핸들러에서 HTTP 상태 코드, 메시지, 로그 기록 통합 관리
  • 예: API 응답 형식 통일, 서버 로그 기록, 사용자 친화 메시지 제공

5. 한 줄 요약

@ControllerAdvice는 컨트롤러 전역의 예외와 공통 관심사를 한 곳에서 처리해 코드 중복을 없애고 일관된 응답을 제공하는 안전망이다.

반응형

댓글