spring-framework / org.springframework.web.bind.annotation / RestControllerAdvice

RestControllerAdvice

@Target([AnnotationTarget.CLASS, AnnotationTarget.FILE]) @ControllerAdvice @ResponseBody class RestControllerAdvice

A convenience annotation that is itself annotated with 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.

Author
Rossen Stoyanchev

Since
4.3

Constructors

<init>

RestControllerAdvice(vararg value: String, basePackages: Array<String>, basePackageClasses: Array<KClass<*>>, assignableTypes: Array<KClass<*>>, annotations: Array<KClass<out Annotation>>)

A convenience annotation that is itself annotated with 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.

Properties

annotations

val annotations: Array<KClass<out Annotation>>

Array of 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.

assignableTypes

val assignableTypes: Array<KClass<*>>

Array of classes.

Controllers that are assignable to at least one of the given types will be assisted by the @ControllerAdvice annotated class.

basePackageClasses

val basePackageClasses: Array<KClass<*>>

Type-safe alternative to #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.

basePackages

val basePackages: Array<String>

Array of base packages.

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.

value

val value: Array<String>

Alias for the #basePackages attribute.

Allows for more concise annotation declarations e.g.: @ControllerAdvice("org.my.pkg") is equivalent to @ControllerAdvice(basePackages="org.my.pkg").