Loading...
Spring Framework Reference Documentation 7.0.2의 Controller Advice의 한국어 번역본입니다.
아래의 경우에 피드백에서 신고해주신다면 반영하겠습니다.
감사합니다 :)
일반적으로, @ExceptionHandler, @InitBinder, 그리고 @ModelAttribute 메서드들은 그것들이 선언된 @Controller 클래스(또는 클래스 계층 구조) 내에서 적용됩니다. 이러한 메서드들을 더 전역적으로 (컨트롤러 전반에 걸쳐) 적용하고 싶다면, @ControllerAdvice 또는 @RestControllerAdvice로 어노테이션된 클래에 그것들을 선언할 수 있습니다.
@ControllerAdvice는 @Component로 어노테이션되어 있는데, 이는 이러한 클래스들이 컴포넌트 스캐닝을 통해 Spring 빈으로 등록될 수 있음을 의미합니다. @RestControllerAdvice는 @ControllerAdvice와 @ResponseBody 둘 다로 어노테이션된 합성 어노테이션으로, 본질적으로 @ExceptionHandler 메서드들이 (뷰 리졸루션 또는 템플릿 렌더링과는 대조적으로) 메시지 변환을 통해 응답 본문으로 렌더된다는 것을 의미합니다.
시작 시점에, @RequestMapping 및 @ExceptionHandler 메서드들을 위한 인프라스트럭처 클래스들은 @ControllerAdvice로 어노테이션된 Spring 빈들을 감지하고 런타임에 그들의 메서드들을 적용합니다. 전역 @ExceptionHandler 메서드들(@ControllerAdvice로부터)은 지역(@Controller로부터) 것들 이후에 적용됩니다. 대조적으로, 전역 @ModelAttribute 및 @InitBinder 메서드들은 지역 것들 이전에 적용됩니다.
기본적으로, @ControllerAdvice 메서드들은 모든 요청(즉, 모든 컨트롤러)에 적용되지만, 다음 예제에서 보듯이 어노테이션의 애트리뷰트들을 사용하여 그것을 컨트롤러의 부분 집합으로 좁힐 수 있습니다:
1// @RestController로 어노테이션된 모든 Controller를 대상으로 함 2@ControllerAdvice(annotations = RestController.class) 3public class ExampleAdvice1 {} 4 5// 특정 package 내의 모든 Controller를 대상으로 함 6@ControllerAdvice("org.example.controllers") 7public class ExampleAdvice2 {} 8 9// 특정 class들에 assignable한 모든 Controller를 대상으로 함 10@ControllerAdvice(assignableTypes = {ControllerInterface.class, AbstractController.class}) 11public class ExampleAdvice3 {} 12// Copied!
1// @RestController로 어노테이션된 모든 Controller를 대상으로 함 2@ControllerAdvice(annotations = [RestController::class]) 3public class ExampleAdvice1 {} 4 5// 특정 package 내의 모든 Controller를 대상으로 함 6@ControllerAdvice("org.example.controllers") 7public class ExampleAdvice2 {} 8 9// 특정 class들에 assignable한 모든 Controller를 대상으로 함 10@ControllerAdvice(assignableTypes = [ControllerInterface::class, AbstractController::class]) 11public class ExampleAdvice3 {} 12// Copied!
앞선 예제의 selector들은 런타임에 평가되며, 광범위하게 사용될 경우 성능에 부정적인 영향을 미칠 수 있습니다. 더 자세한 내용은
@ControllerAdvice
javadoc을 참조하십시오.
Exceptions
Functional Endpoints