java.lang.Object | |
↳ | org.springframework.core.annotation.AnnotationUtils |
General utility methods for working with annotations, handling bridge methods (which the compiler generates for generic declarations) as well as super methods (for optional "annotation inheritance"). Note that none of this is provided by the JDK's introspection facilities themselves.
As a general rule for runtime-retained annotations (e.g. for transaction control, authorization or service
exposure), always use the lookup methods on this class (e.g., findAnnotation(Method, Class)
, getAnnotation(Method, Class)
, and getAnnotations(Method)
) instead of the plain annotation lookup
methods in the JDK. You can still explicitly choose between lookup on the given class level only (getAnnotation(Method, Class)
) and lookup in the entire inheritance hierarchy of the given method (findAnnotation(Method, Class)
).
Public Constructors | |||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|
Public Methods | |||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|
Find a single
Annotation of annotationType from the supplied Class ,
traversing its interfaces and superclasses if no annotation can be found on the given class itself. | |||||||||||
Get a single
Annotation of annotationType from the supplied Method ,
traversing its super methods if no annotation can be found on the given method itself. | |||||||||||
Find the first
Class in the inheritance hierarchy of the specified clazz
(including the specified clazz itself) which declares an annotation for the
specified annotationType , or null if not found. | |||||||||||
Retrieve the given annotation's attributes as a Map, preserving all attribute types as-is.
| |||||||||||
Retrieve the given annotation's attributes as a Map.
| |||||||||||
Get all
Annotations from the supplied Method . | |||||||||||
Retrieve the default value of a named Annotation attribute, given an annotation instance.
| |||||||||||
Retrieve the default value of the
"value" attribute
of a single-element Annotation, given an annotation instance. | |||||||||||
Retrieve the default value of the
"value" attribute
of a single-element Annotation, given the annotation type . | |||||||||||
Retrieve the default value of a named Annotation attribute, given the
annotation type . | |||||||||||
Retrieve the value of a named Annotation attribute, given an annotation instance.
| |||||||||||
Retrieve the value of the
"value" attribute of a
single-element Annotation, given an annotation instance. | |||||||||||
Determine whether an annotation for the specified
annotationType is
declared locally on the supplied clazz . | |||||||||||
Determine whether an annotation for the specified
annotationType is present
on the supplied clazz and is java.lang.annotation.Inherited inherited
i.e., not declared locally for the class). |
[Expand]
Inherited Methods | |||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|
From class
java.lang.Object
|
Find a single Annotation
of annotationType
from the supplied Class
,
traversing its interfaces and superclasses if no annotation can be found on the given class itself.
This method explicitly handles class-level annotations which are not declared as java.lang.annotation.Inherited inherited as well as annotations on interfaces.
The algorithm operates as follows: Searches for an annotation on the given class and returns it if found. Else searches all interfaces that the given class declares, returning the annotation from the first matching candidate, if any. Else proceeds with introspection of the superclass of the given class, checking the superclass itself; if no annotation found there, proceeds with the interfaces that the superclass declares. Recursing up through the entire superclass hierarchy if no match is found.
clazz | the class to look for annotations on |
---|---|
annotationType | the annotation class to look for |
null
if none found
Get a single Annotation
of annotationType
from the supplied Method
,
traversing its super methods if no annotation can be found on the given method itself.
Annotations on methods are not inherited by default, so we need to handle this explicitly.
method | the method to look for annotations on |
---|---|
annotationType | the annotation class to look for |
null
if none found
Find the first Class
in the inheritance hierarchy of the specified clazz
(including the specified clazz
itself) which declares an annotation for the
specified annotationType
, or null
if not found. If the supplied
clazz
is null
, null
will be returned.
If the supplied clazz
is an interface, only the interface itself will be checked;
the inheritance hierarchy for interfaces will not be traversed.
The standard Class
API does not provide a mechanism for determining which class
in an inheritance hierarchy actually declares an Annotation
, so we need to handle
this explicitly.
annotationType | the Class object corresponding to the annotation type |
---|---|
clazz | the Class object corresponding to the class on which to check for the annotation,
or null |
Class
in the inheritance hierarchy of the specified clazz
which declares an annotation for the specified annotationType
, or null
if not foundGet a single Annotation
of annotationType
from the supplied Method
.
Correctly handles bridge Methods
generated by the compiler.
method | the method to look for annotations on |
---|---|
annotationType | the annotation class to look for |
Retrieve the given annotation's attributes as a Map, preserving all attribute types as-is.
annotation | the annotation to retrieve the attributes for |
---|
Retrieve the given annotation's attributes as a Map.
annotation | the annotation to retrieve the attributes for |
---|---|
classValuesAsString | whether to turn Class references into Strings (for compatibility with
AnnotationMetadata or to preserve them as Class references |
Get all Annotations
from the supplied Method
.
Correctly handles bridge Methods
generated by the compiler.
method | the method to look for annotations on |
---|
Retrieve the default value of a named Annotation attribute, given an annotation instance.
annotation | the annotation instance from which to retrieve the default value |
---|---|
attributeName | the name of the attribute value to retrieve |
null
if not foundRetrieve the default value of the "value"
attribute
of a single-element Annotation, given an annotation instance.
annotation | the annotation instance from which to retrieve the default value |
---|
null
if not foundRetrieve the default value of the "value"
attribute
of a single-element Annotation, given the annotation type
.
annotationType | the annotation type for which the default value should be retrieved |
---|
null
if not foundRetrieve the default value of a named Annotation attribute, given the annotation type
.
annotationType | the annotation type for which the default value should be retrieved |
---|---|
attributeName | the name of the attribute value to retrieve. |
null
if not foundRetrieve the value of a named Annotation attribute, given an annotation instance.
annotation | the annotation instance from which to retrieve the value |
---|---|
attributeName | the name of the attribute value to retrieve |
null
if not foundRetrieve the value of the "value"
attribute of a
single-element Annotation, given an annotation instance.
annotation | the annotation instance from which to retrieve the value |
---|
null
if not foundDetermine whether an annotation for the specified annotationType
is
declared locally on the supplied clazz
. The supplied Class
may represent any type.
Note: This method does not determine if the annotation is
java.lang.annotation.Inherited inherited. For greater clarity regarding inherited
annotations, consider using isAnnotationInherited(Class, Class)
instead.
annotationType | the Class object corresponding to the annotation type |
---|---|
clazz | the Class object corresponding to the class on which to check for the annotation |
true
if an annotation for the specified annotationType
is declared locally on the supplied clazz
Determine whether an annotation for the specified annotationType
is present
on the supplied clazz
and is java.lang.annotation.Inherited inherited
i.e., not declared locally for the class).
If the supplied clazz
is an interface, only the interface itself will be checked.
In accordance with standard meta-annotation semantics, the inheritance hierarchy for interfaces
will not be traversed. See the java.lang.annotation.Inherited JavaDoc for the
@Inherited meta-annotation for further details regarding annotation inheritance.
annotationType | the Class object corresponding to the annotation type |
---|---|
clazz | the Class object corresponding to the class on which to check for the annotation |
true
if an annotation for the specified annotationType
is present
on the supplied clazz
and is java.lang.annotation.Inherited inherited