Spring Boot에서 사용되는 각종 어노테이션 정리 2

CJI0524·2025년 3월 11일

Spring Boot

목록 보기
9/21

이전글에서 이어지는 내용이다.

1. 예외 처리 관련 어노테이션

1.1. @ControllerAdvice

@ControllerAdvice는 스프링 MVC에서 전역으로 예외나 바인딩, 모델 속성 등을 처리할 수 있게 해주는 클래스 레벨 어노테이션.

  • 클래스에만 사용 : 이 어노테이션은 오직 클래스에 붙여서 해당 클래스가 모든 컨트롤러에 적용될 공통 처리를 담당하도록 작성.
  • 전역 처리 : 개별 컨트롤러마다 중복되는 예외 처리, 데이터 바인딩, 모델 속성 설정 등의 코드를 작성하지 않고 한 곳에서 관리가능.
  • 다양한 기능 지원 : 예외 처리 외에도, @InitBinder나 @ModelAttribute 같은 메서드와 함께 사용하면 요청 처리 전반에 걸쳐 필요한 공통 설정을 적용가능.

1.2. @ExceptionHandler

@ExceptionHandler특정 예외가 발생했을 때 실행될 메서드에 붙이는 메서드 레벨 어노테이션.

  • 메서드에 사용 : 이 어노테이션은 클래스 내부의 메서드에 붙여서 해당 메서드가 특정 예외 혹은 예외 그룹을 처리하도록 지정.
  • 예외 매핑 : 지정한 예외가 컨트롤러 내에서 발생하면, 자동으로 해당 메서드가 호출되어 예외에 대한 적절한 응답을 만들어낼 수 있게 도와줌.
  • 유연한 처리 : 하나의 메서드에서 여러 종류의 예외를 처리하거나, 각각의 예외에 대해 개별적으로 처리할 수 있도록 세밀하게 구성 가능.

사용 예시

✍️ 작성

@ControllerAdvice
public class GlobalExceptionHandler {

    @ExceptionHandler(IllegalArgumentException.class)
    public ResponseEntity<String> handleIllegalArgument(IllegalArgumentException ex) {
        return new ResponseEntity<>("잘못된 인자가 전달: " + ex.getMessage(), HttpStatus.BAD_REQUEST);
    }
}

위 예제에서 IllegalArgumentException이 발생하면, 해당 메서드가 호출되어 에러 메시지와 함께 BAD_REQUEST(400) 상태 코드를 반환한다. 이렇게 하면 컨트롤러에서 따로 예외 처리를 하지 않아도 되고, 공통된 방식으로 예외 처리가 가능해진다.

즉, @ControllerAdvice와 @ExceptionHandler를 함께 사용하면 예외 관리를 중앙 집중화할 수 있어서 코드 유지보수나 관리가 훨씬 수월해진다.

2. 해당 게시글 작성에 참고한 글 목록

멋쟁이 사자처럼 강의자료

profile
개발돌이

0개의 댓글