Controller Advice
2024. 10. 9. 17:53ㆍSpring Framework/Web on Servlet Stack
@ControllerAdvice
는 스프링에서 여러 컨트롤러에 전역적으로 적용할 수 있는 기능을 제공합니다. @ExceptionHandler
, @InitBinder
, @ModelAttribute
메서드를 특정 컨트롤러가 아닌 모든 컨트롤러에 적용할 수 있도록 합니다. @RestControllerAdvice
는 @ControllerAdvice
와 비슷하지만 JSON이나 XML 형식으로 응답을 처리합니다.
주요 특징:
- 전역 적용: 모든 컨트롤러에 예외 처리 및 데이터 바인딩을 적용합니다.
- 타겟 설정: 특정 패키지나 클래스, 어노테이션을 사용하여 적용 범위를 제한할 수 있습니다.
예시:
import org.springframework.web.bind.annotation.ControllerAdvice;
import org.springframework.web.bind.annotation.ExceptionHandler;
import org.springframework.http.ResponseEntity;
@ControllerAdvice
public class GlobalExceptionHandler {
@ExceptionHandler(Exception.class)
public ResponseEntity<String> handleException(Exception ex) {
return ResponseEntity.status(500).body("Global error: " + ex.getMessage());
}
}
코드 설명:
@ControllerAdvice
: 모든 컨트롤러에서 발생하는 예외를 처리할 수 있게 해줍니다.@ExceptionHandler(Exception.class)
: 발생한 예외를 처리하고 500 상태 코드와 함께 응답을 반환합니다.
또한, @ControllerAdvice
를 사용하면 특정 패키지나 컨트롤러 클래스에만 적용되도록 제한할 수 있습니다.
@ControllerAdvice("com.example.controllers")
public class SpecificExceptionHandler {
@ExceptionHandler(NullPointerException.class)
public ResponseEntity<String> handleNullPointerException(NullPointerException ex) {
return ResponseEntity.status(400).body("Null pointer error: " + ex.getMessage());
}
}
코드 설명:
- 이 예시는
"com.example.controllers"
패키지에 있는 컨트롤러들에만 예외 처리기를 적용하는 방식입니다.
<참고> : https://docs.spring.io/spring-framework/reference/web/webmvc/mvc-controller/ann-advice.html
'Spring Framework > Web on Servlet Stack' 카테고리의 다른 글
Declaration (1) | 2024.10.09 |
---|---|
@RequestParam (0) | 2024.10.09 |
Exceptions (0) | 2024.10.09 |
Validation (0) | 2024.10.09 |
@InitBinder (0) | 2024.10.09 |