@Target(value=TYPE) @Retention(value=RUNTIME) @Documented @ControllerAdvice @ResponseBody public @interface RestControllerAdvice
@ControllerAdvice
 and @ResponseBody.
 Types that carry this annotation are treated as controller advice where
 @ExceptionHandler methods assume
 @ResponseBody semantics by default.
 
NOTE: @RestControllerAdvice is processed if an appropriate
 HandlerMapping-HandlerAdapter pair is configured such as the
 RequestMappingHandlerMapping-RequestMappingHandlerAdapter pair
 which are the default in the MVC Java config and the MVC namespace.
 In particular @RestControllerAdvice is not supported with the
 DefaultAnnotationHandlerMapping-AnnotationMethodHandlerAdapter
 pair both of which are also deprecated.
| Modifier and Type | Optional Element and Description | 
|---|---|
Class<? extends Annotation>[] | 
annotations
Array of annotations. 
 | 
Class<?>[] | 
assignableTypes
Array of classes. 
 | 
Class<?>[] | 
basePackageClasses
Type-safe alternative to  
value() for specifying the packages
 to select Controllers to be assisted by the @ControllerAdvice
 annotated class. | 
String[] | 
basePackages
Array of base packages. 
 | 
String[] | 
value
Alias for the  
basePackages() attribute. | 
@AliasFor(value="basePackages") public abstract String[] value
basePackages() attribute.
 Allows for more concise annotation declarations e.g.:
 @ControllerAdvice("org.my.pkg") is equivalent to
 @ControllerAdvice(basePackages="org.my.pkg").
basePackages()@AliasFor(value="value") public abstract String[] basePackages
Controllers that belong to those base packages or sub-packages thereof
 will be included, e.g.: @ControllerAdvice(basePackages="org.my.pkg")
 or @ControllerAdvice(basePackages={"org.my.pkg", "org.my.other.pkg"}).
 
value() is an alias for this attribute, simply allowing for
 more concise use of the annotation.
 
Also consider using basePackageClasses() as a type-safe
 alternative to String-based package names.
public abstract Class<?>[] basePackageClasses
value() for specifying the packages
 to select Controllers to be assisted by the @ControllerAdvice
 annotated class.
 Consider creating a special no-op marker class or interface in each package that serves no purpose other than being referenced by this attribute.
public abstract Class<?>[] assignableTypes
Controllers that are assignable to at least one of the given types
 will be assisted by the @ControllerAdvice annotated class.
public abstract Class<? extends Annotation>[] annotations
Controllers that are annotated with this/one of those annotation(s)
 will be assisted by the @ControllerAdvice annotated class.
 
Consider creating a special annotation or use a predefined one,
 like @RestController.