반응형
1. 개요
@ControllerAdvice는 컨트롤러 전역에서 발생하는 예외, 모델, 바인딩 등을 한 곳에서 처리하기 위한 스프링 어노테이션이다.
실무에서는 대부분 전역 예외 처리용으로 사용된다.
2. 주요 용도
- 전역 예외 처리
- 모든 컨트롤러에서 발생하는 예외를 한 곳에서 잡아서 일관된 응답 반환
@ControllerAdvice public class GlobalExceptionHandler { @ExceptionHandler(Exception.class) public ResponseEntity<String> handleAll(Exception ex) { return ResponseEntity.status(HttpStatus.INTERNAL_SERVER_ERROR) .body("서버 오류: " + ex.getMessage()); } } - 모델 데이터 전역 적용
- 모든 뷰(Controller)에서 공통으로 필요한 데이터 주입
@ModelAttribute("currentUser") public User addUser() { return getCurrentUser(); } - 바인딩/검증 처리
- @InitBinder로 모든 컨트롤러 요청의 바인딩/검증 설정 가능
3. 동작 순서
- 컨트롤러에서 예외 발생 → 해당 컨트롤러 @ExceptionHandler가 먼저 처리
- 컨트롤러 단위 핸들러 없으면 → @ControllerAdvice 전역 핸들러 호출
- 즉, “Controller 예외 처리 > ControllerAdvice 전역 처리” 순서
4. 실무 팁
- 서비스 계층에서 예외를 던지고, 컨트롤러는 try-catch 없이 호출만
- 전역 핸들러에서 HTTP 상태 코드, 메시지, 로그 기록 통합 관리
- 예: API 응답 형식 통일, 서버 로그 기록, 사용자 친화 메시지 제공
5. 한 줄 요약
@ControllerAdvice는 컨트롤러 전역의 예외와 공통 관심사를 한 곳에서 처리해 코드 중복을 없애고 일관된 응답을 제공하는 안전망이다.
반응형
'IT' 카테고리의 다른 글
| 실서비스에서 커넥션 풀(hikari Cp) 제대로 이해하기 (0) | 2025.12.16 |
|---|---|
| Business Exception vs System Exception (0) | 2025.12.15 |
| Spring @Transactional Propagation 완전 정리 (0) | 2025.12.15 |
| 외부 API 장애에도 우리 서비스가 죽지 않게 하는 방법 (0) | 2025.12.15 |
| 낙관적 락 vs 비관적 락 (0) | 2025.12.15 |
댓글