Merge branch '5.1.x'
This commit is contained in:
commit
2f4c97cbdb
|
|
@ -2639,26 +2639,27 @@ an HTTP status code.
|
|||
=== Controller Advice
|
||||
[.small]#<<web.adoc#mvc-ann-controller-advice, Same as in Spring MVC>>#
|
||||
|
||||
Typically, the `@ExceptionHandler`, `@InitBinder`, and `@ModelAttribute` methods apply within
|
||||
the `@Controller` class (or class hierarchy) in which they are declared. If you want such
|
||||
methods to apply more globally (across controllers), you can declare them in a class
|
||||
marked with `@ControllerAdvice` or `@RestControllerAdvice`.
|
||||
Typically, the `@ExceptionHandler`, `@InitBinder`, and `@ModelAttribute` methods apply
|
||||
within the `@Controller` class (or class hierarchy) in which they are declared. If you
|
||||
want such methods to apply more globally (across controllers), you can declare them in a
|
||||
class annotated with `@ControllerAdvice` or `@RestControllerAdvice`.
|
||||
|
||||
`@ControllerAdvice` is marked with `@Component`, which means that such classes can be registered
|
||||
as Spring beans through <<core.adoc#beans-java-instantiating-container-scan, component scanning>>.
|
||||
`@RestControllerAdvice` is also a meta-annotation marked with both `@ControllerAdvice` and
|
||||
`@ResponseBody`, which essentially means `@ExceptionHandler` methods are rendered to the
|
||||
response body through message conversion (versus view resolution or template rendering).
|
||||
`@ControllerAdvice` is annotated with `@Component`, which means that such classes can be
|
||||
registered as Spring beans through <<core.adoc#beans-java-instantiating-container-scan,
|
||||
component scanning>>. `@RestControllerAdvice` is a composed annotation that is annotated
|
||||
with both `@ControllerAdvice` and `@ResponseBody`, which essentially means
|
||||
`@ExceptionHandler` methods are rendered to the response body through message conversion
|
||||
(versus view resolution or template rendering).
|
||||
|
||||
On startup, the infrastructure classes for `@RequestMapping` and `@ExceptionHandler` methods
|
||||
detect Spring beans of type `@ControllerAdvice` and apply their methods at runtime.
|
||||
Global `@ExceptionHandler` methods (from a `@ControllerAdvice`) are applied *after* local
|
||||
ones (from the `@Controller`). By contrast, global `@ModelAttribute` and `@InitBinder`
|
||||
methods are applied *before* local ones.
|
||||
On startup, the infrastructure classes for `@RequestMapping` and `@ExceptionHandler`
|
||||
methods detect Spring beans annotated with `@ControllerAdvice` and then apply their
|
||||
methods at runtime. Global `@ExceptionHandler` methods (from a `@ControllerAdvice`) are
|
||||
applied _after_ local ones (from the `@Controller`). By contrast, global `@ModelAttribute`
|
||||
and `@InitBinder` methods are applied _before_ local ones.
|
||||
|
||||
By default `@ControllerAdvice` methods apply to every request (that is, all controllers), but
|
||||
you can narrow that down to a subset of controllers through attributes on the annotation,
|
||||
as the following example shows:
|
||||
By default, `@ControllerAdvice` methods apply to every request (that is, all controllers),
|
||||
but you can narrow that down to a subset of controllers by using attributes on the
|
||||
annotation, as the following example shows:
|
||||
|
||||
[source,java,indent=0]
|
||||
[subs="verbatim,quotes"]
|
||||
|
|
@ -2676,8 +2677,8 @@ as the following example shows:
|
|||
public class ExampleAdvice3 {}
|
||||
----
|
||||
|
||||
The preceding selectors are evaluated at runtime and may negatively impact
|
||||
performance if you use them extensively. See the
|
||||
The selectors in the preceding example are evaluated at runtime and may negatively impact
|
||||
performance if used extensively. See the
|
||||
{api-spring-framework}/web/bind/annotation/ControllerAdvice.html[`@ControllerAdvice`]
|
||||
javadoc for more details.
|
||||
|
||||
|
|
|
|||
|
|
@ -3120,23 +3120,24 @@ necessary methods, and declare it as a Spring bean.
|
|||
Typically `@ExceptionHandler`, `@InitBinder`, and `@ModelAttribute` methods apply within
|
||||
the `@Controller` class (or class hierarchy) in which they are declared. If you want such
|
||||
methods to apply more globally (across controllers), you can declare them in a class
|
||||
marked with `@ControllerAdvice` or `@RestControllerAdvice`.
|
||||
annotated with `@ControllerAdvice` or `@RestControllerAdvice`.
|
||||
|
||||
`@ControllerAdvice` is marked with `@Component`, which means such classes can be registered
|
||||
as Spring beans through <<core.adoc#beans-java-instantiating-container-scan, component scanning>>.
|
||||
`@RestControllerAdvice` is also a meta-annotation marked with both `@ControllerAdvice` and
|
||||
`@ResponseBody`, which essentially means `@ExceptionHandler` methods are rendered to the
|
||||
response body through message conversion (versus view resolution or template rendering).
|
||||
`@ControllerAdvice` is annotated with `@Component`, which means such classes can be
|
||||
registered as Spring beans through <<core.adoc#beans-java-instantiating-container-scan,
|
||||
component scanning>>. `@RestControllerAdvice` is a composed annotation that is annotated
|
||||
with both `@ControllerAdvice` and `@ResponseBody`, which essentially means
|
||||
`@ExceptionHandler` methods are rendered to the response body through message conversion
|
||||
(versus view resolution or template rendering).
|
||||
|
||||
On startup, the infrastructure classes for `@RequestMapping` and `@ExceptionHandler` methods
|
||||
detect Spring beans of type `@ControllerAdvice` and then apply their methods at runtime.
|
||||
Global `@ExceptionHandler` methods (from a `@ControllerAdvice`) are applied _after_ local
|
||||
ones (from the `@Controller`). By contrast, global `@ModelAttribute` and `@InitBinder`
|
||||
methods are applied _before_ local ones.
|
||||
On startup, the infrastructure classes for `@RequestMapping` and `@ExceptionHandler`
|
||||
methods detect Spring beans annotated with `@ControllerAdvice` and then apply their
|
||||
methods at runtime. Global `@ExceptionHandler` methods (from a `@ControllerAdvice`) are
|
||||
applied _after_ local ones (from the `@Controller`). By contrast, global `@ModelAttribute`
|
||||
and `@InitBinder` methods are applied _before_ local ones.
|
||||
|
||||
By default, `@ControllerAdvice` methods apply to every request (that is, all controllers), but
|
||||
you can narrow that down to a subset of controllers by using attributes on the annotation,
|
||||
as the following example shows:
|
||||
By default, `@ControllerAdvice` methods apply to every request (that is, all controllers),
|
||||
but you can narrow that down to a subset of controllers by using attributes on the
|
||||
annotation, as the following example shows:
|
||||
|
||||
[source,java,indent=0]
|
||||
[subs="verbatim,quotes"]
|
||||
|
|
|
|||
Loading…
Reference in New Issue