본문 바로가기
IT/spring

스프링 @ControllerAdvice 어노테이션

by 뉴코딩맨 2023. 6. 30.
스프링 프레임워크(Spring Framework)는 웹 애플리케이션 개발을 위한 다양한 기능과 라이브러리를 제공합니다. 그 중에서도 예외 처리와 관련된 기능은 많은 웹 애플리케이션에서 필요한 기능 중 하나입니다. 스프링은 예외 처리를 효율적으로 관리하기 위해 @ControllerAdvice 어노테이션을 제공합니다. @ControllerAdvice 어노테이션에 대해 자세히 알아보고, 그 사용법과 장점에 대해 살펴보겠습니다.

 

 

@ControllerAdvice 어노테이션 소개

@ControllerAdvice 어노테이션은 스프링 애플리케이션에서 예외 처리를 일관성 있게 관리하기 위해 사용됩니다. 이 어노테이션은 일반적으로 전역적으로 적용되는 예외 처리와 관련된 기능을 정의하는 클래스에 적용됩니다. @ControllerAdvice 어노테이션은 예외 처리, 바인딩 오류 처리, 모델 객체 초기화 등의 작업을 수행하는 메서드를 정의할 수 있습니다.
 
 

@ControllerAdvice 어노테이션의 사용법

@ControllerAdvice 어노테이션은 다음과 같이 사용됩니다.
 
@ControllerAdvice
public class GlobalExceptionHandler {
    // 예외 처리와 관련된 메서드 정의
    // ...
}
 
위의 예제에서 GlobalExceptionHandler 클래스는 @ControllerAdvice 어노테이션으로 표시되어 있습니다. 이 클래스는 전역적으로 예외 처리와 관련된 작업을 수행하는 메서드를 정의할 수 있습니다.

 

 

@ControllerAdvice 어노테이션의 장점

@ControllerAdvice 어노테이션을 사용하는 것의 장점은 다음과 같습니다:
 
전역 예외 처리: @ControllerAdvice 어노테이션은 애플리케이션에서 발생하는 예외를 한 곳에서 처리할 수 있도록 합니다. 이는 코드의 중복을 줄이고 예외 처리의 일관성을 유지할 수 있게 합니다.
 
컨트롤러간 코드 공유: @ControllerAdvice 어노테이션은 여러 컨트롤러에서 공통으로 사용되는 코드를 정의할 수 있게 합니다. 이는 코드의 재사용성을 높이고 개발 생산성을 향상시킵니다.
 
전역 모델 객체 초기화: @ControllerAdvice 어노테이션을 사용하여 모든 요청에 공통적으로 필요한 모델 객체를 초기화할 수 있습니다. 이는 모델 객체의 일관성을 유지하고 요청 처리에 필요한 데이터를 미리 준비할 수 있게 합니다.

 

 

예제를 통한 설명

다음은 @ControllerAdvice 어노테이션을 사용하여 예외 처리를 구현하는 예제입니다. 예제에서는 @ExceptionHandler 어노테이션을 함께 사용하여 특정 예외에 대한 처리를 정의합니다.

 

@ControllerAdvice
public class GlobalExceptionHandler {
    
    @ExceptionHandler(Exception.class)
    public ResponseEntity<String> handleException(Exception ex) {
        // 예외 처리 로직
        return new ResponseEntity<>("Internal Server Error", HttpStatus.INTERNAL_SERVER_ERROR);
    }
    
    @ExceptionHandler(UserNotFoundException.class)
    public ResponseEntity<String> handleUserNotFoundException(UserNotFoundException ex) {
        // 사용자를 찾을 수 없는 예외 처리 로직
        return new ResponseEntity<>("User Not Found", HttpStatus.NOT_FOUND);
    }
    
    // ...
}
 
위의 예제에서 handleException 메서드는 모든 예외에 대한 처리를 담당합니다. 만약 애플리케이션에서 예외가 발생하면 해당 메서드가 실행되어 예외 처리를 수행하고, ResponseEntity 객체를 반환합니다. 이를 통해 클라이언트에게 적절한 응답을 전송할 수 있습니다. 또한 handleUserNotFoundException 메서드는 UserNotFoundException에 대한 처리를 정의합니다. 이처럼 @ControllerAdvice 어노테이션을 사용하면 각각의 예외에 대한 개별적인 처리 로직을 구현할 수 있습니다.
 
 

결론

@ControllerAdvice 어노테이션은 스프링 애플리케이션에서 예외 처리를 일관성 있게 관리하기 위한 강력한 기능을 제공합니다. 이를 통해 전역적으로 예외 처리와 관련된 작업을 정의하고, 중복 코드를 제거하고, 개발 생산성을 향상시킬 수 있습니다. 예제를 통해 @ControllerAdvice 어노테이션의 사용법과 장점을 살펴보았습니다. 이를 통해 스프링 애플리케이션에서 예외 처리를 효율적으로 구현할 수 있습니다.
 

 

'IT > spring' 카테고리의 다른 글

스프링 MessageSource  (0) 2023.06.30
스프링 @ExceptionHandler 어노테이션  (0) 2023.06.30
스프링 MultipartResolver  (0) 2023.06.29
스프링 @SessionAttributes 어노테이션  (0) 2023.06.29
스프링 @RequestParam 어노테이션  (0) 2023.06.29

댓글