@ControllerAdvice - 중앙 집중적 예외처리

NewImpurity·2023년 9월 12일

study

목록 보기
6/7

@ControllerAdvice

@ControllerAdvice는 스프링 프레임워크에서 제공하는 어노테이션으로, 전역 컨트롤러에서 발생하는 예외를 처리하고 응답을 제어하기 위해 사용됩니다.

주로 스프링 MVC 애플리케이션에서 예외 처리와 관련된 로직을 중앙 집중적으로 관리하고 재사용 가능한 방식으로 구현할 때 유용합니다.

@ControllerAdvice 어노테이션이 적용된 클래스는 다음과 같은 역할을 수행합니다:

  1. 전역 예외 처리기(Global Exception Handler): @ControllerAdvice 어노테이션이 적용된 클래스는 모든 컨트롤러에서 발생하는 예외를 처리하는 공통된 예외 처리기 역할을 합니다. 즉, 어플리케이션 어느 곳에서든 예외가 발생하면 이 클래스의 메서드가 호출됩니다.

  2. 특정 예외 클래스 처리: @ControllerAdvice 어노테이션은 basePackages 또는 basePackageClasses 속성을 사용하여 특정 패키지 또는 클래스에 속한 예외만을 처리하도록 제한할 수 있습니다. 이를 통해 특정 예외 클래스에 대한 처리를 구체적으로 정의할 수 있습니다.

  3. 응답 커스터마이징: 예외 처리 메서드 내에서 응답을 커스터마이징하고, 예외에 따라 다른 HTTP 상태 코드, 응답 본문 등을 설정할 수 있습니다.



@ControllerAdvice를 사용한 전역 예외 처리 클래스의 예시:


@ControllerAdvice
public class GlobalExceptionHandler {

    @ExceptionHandler(Exception.class)
    public ResponseEntity<String> handleGlobalException(Exception e) {
        // 예외 처리 로직
        return ResponseEntity.status(HttpStatus.INTERNAL_SERVER_ERROR).body("서버 오류 발생: " + e.getMessage());
    }

    @ExceptionHandler(MyCustomException.class)
    public ResponseEntity<String> handleCustomException(MyCustomException e) {
        // 특정 예외 처리 로직
        return ResponseEntity.status(HttpStatus.BAD_REQUEST).body("잘못된 요청: " + e.getMessage());
    }

    // 다른 예외 처리 메서드 추가 가능
}
  • 위의 코드에서 @ExceptionHandler 어노테이션을 사용하여 특정 예외 클래스 또는 예외 타입에 따라 예외 처리 메서드를 정의하고, 해당 예외가 발생할 때 호출될 로직을 작성합니다.
profile
NewImpurity

0개의 댓글