Interface AnnotatedTypeMetadata
- All Known Subinterfaces:
AnnotationMetadata
,MethodMetadata
- All Known Implementing Classes:
StandardAnnotationMetadata
,StandardMethodMetadata
class
or method
), in a form that does not necessarily require
class loading of the types being inspected. Note, however, that classes for
encountered annotations will be loaded.- Since:
- 4.0
- Author:
- Juergen Hoeller, Mark Fisher, Mark Pollack, Chris Beams, Phillip Webb, Sam Brannen
- See Also:
-
Method Summary
Modifier and TypeMethodDescriptiondefault MultiValueMap<String,
Object> getAllAnnotationAttributes
(String annotationName) Retrieve all attributes of all annotations of the given type, if any (i.e.default MultiValueMap<String,
Object> getAllAnnotationAttributes
(String annotationName, boolean classValuesAsString) Retrieve all attributes of all annotations of the given type, if any (i.e.getAnnotationAttributes
(String annotationName) Retrieve the attributes of the annotation of the given type, if any (i.e.getAnnotationAttributes
(String annotationName, boolean classValuesAsString) Retrieve the attributes of the annotation of the given type, if any (i.e.Get annotation details based on the direct annotations and meta-annotations of the underlying element.default Set<AnnotationAttributes>
getMergedRepeatableAnnotationAttributes
(Class<? extends Annotation> annotationType, Class<? extends Annotation> containerType, boolean classValuesAsString) Retrieve all repeatable annotations of the given type within the annotation hierarchy above the underlying element (as direct annotation or meta-annotation); and for each annotation found, merge that annotation's attributes with matching attributes from annotations in lower levels of the annotation hierarchy and store the results in an instance ofAnnotationAttributes
.default Set<AnnotationAttributes>
getMergedRepeatableAnnotationAttributes
(Class<? extends Annotation> annotationType, Class<? extends Annotation> containerType, boolean classValuesAsString, boolean sortByReversedMetaDistance) Retrieve all repeatable annotations of the given type within the annotation hierarchy above the underlying element (as direct annotation or meta-annotation); and for each annotation found, merge that annotation's attributes with matching attributes from annotations in lower levels of the annotation hierarchy and store the results in an instance ofAnnotationAttributes
.default Set<AnnotationAttributes>
getMergedRepeatableAnnotationAttributes
(Class<? extends Annotation> annotationType, Class<? extends Annotation> containerType, Predicate<MergedAnnotation<? extends Annotation>> predicate, boolean classValuesAsString, boolean sortByReversedMetaDistance) Retrieve all repeatable annotations of the given type within the annotation hierarchy above the underlying element (as direct annotation or meta-annotation); and for each annotation found, merge that annotation's attributes with matching attributes from annotations in lower levels of the annotation hierarchy and store the results in an instance ofAnnotationAttributes
.default boolean
isAnnotated
(String annotationName) Determine whether the underlying element has an annotation or meta-annotation of the given type defined.
-
Method Details
-
getAnnotations
MergedAnnotations getAnnotations()Get annotation details based on the direct annotations and meta-annotations of the underlying element.- Returns:
- merged annotations based on the direct annotations and meta-annotations
- Since:
- 5.2
-
isAnnotated
Determine whether the underlying element has an annotation or meta-annotation of the given type defined.If this method returns
true
, thengetAnnotationAttributes(java.lang.String)
will return a non-null Map.- Parameters:
annotationName
- the fully-qualified class name of the annotation type to look for- Returns:
- whether a matching annotation is defined
-
getAnnotationAttributes
Retrieve the attributes of the annotation of the given type, if any (i.e. if defined on the underlying element, as direct annotation or meta-annotation).@AliasFor
semantics are fully supported, both within a single annotation and within annotation hierarchies.- Parameters:
annotationName
- the fully-qualified class name of the annotation type to look for- Returns:
- a
Map
of attributes, with each annotation attribute name as map key (e.g. "location") and the attribute's value as map value; ornull
if no matching annotation is found
-
getAnnotationAttributes
@Nullable default Map<String,Object> getAnnotationAttributes(String annotationName, boolean classValuesAsString) Retrieve the attributes of the annotation of the given type, if any (i.e. if defined on the underlying element, as direct annotation or meta-annotation).@AliasFor
semantics are fully supported, both within a single annotation and within annotation hierarchies.- Parameters:
annotationName
- the fully-qualified class name of the annotation type to look forclassValuesAsString
- whether to convert class references to String class names for exposure as values in the returned Map, instead of Class references which might potentially have to be loaded first- Returns:
- a
Map
of attributes, with each annotation attribute name as map key (e.g. "location") and the attribute's value as map value; ornull
if no matching annotation is found
-
getAllAnnotationAttributes
Retrieve all attributes of all annotations of the given type, if any (i.e. if defined on the underlying element, as direct annotation or meta-annotation).Note: this method does not take attribute overrides on composed annotations into account.
- Parameters:
annotationName
- the fully-qualified class name of the annotation type to look for- Returns:
- a
MultiValueMap
of attributes, with each annotation attribute name as map key (e.g. "location") and a list of the attribute's values as map value; ornull
if no matching annotation is found - See Also:
-
getAllAnnotationAttributes
@Nullable default MultiValueMap<String,Object> getAllAnnotationAttributes(String annotationName, boolean classValuesAsString) Retrieve all attributes of all annotations of the given type, if any (i.e. if defined on the underlying element, as direct annotation or meta-annotation).Note: this method does not take attribute overrides on composed annotations into account.
- Parameters:
annotationName
- the fully-qualified class name of the annotation type to look forclassValuesAsString
- whether to convert class references to String class names for exposure as values in the returned Map, instead of Class references which might potentially have to be loaded first- Returns:
- a
MultiValueMap
of attributes, with each annotation attribute name as map key (e.g. "location") and a list of the attribute's values as map value; ornull
if no matching annotation is found - See Also:
-
getMergedRepeatableAnnotationAttributes
default Set<AnnotationAttributes> getMergedRepeatableAnnotationAttributes(Class<? extends Annotation> annotationType, Class<? extends Annotation> containerType, boolean classValuesAsString) Retrieve all repeatable annotations of the given type within the annotation hierarchy above the underlying element (as direct annotation or meta-annotation); and for each annotation found, merge that annotation's attributes with matching attributes from annotations in lower levels of the annotation hierarchy and store the results in an instance ofAnnotationAttributes
.@AliasFor
semantics are fully supported, both within a single annotation and within annotation hierarchies.- Parameters:
annotationType
- the annotation type to findcontainerType
- the type of the container that holds the annotationsclassValuesAsString
- whether to convert class references toString
class names for exposure as values in the returnedAnnotationAttributes
, instead ofClass
references which might potentially have to be loaded first- Returns:
- the set of all merged repeatable
AnnotationAttributes
found, or an empty set if none were found - Since:
- 6.1
- See Also:
-
getMergedRepeatableAnnotationAttributes
default Set<AnnotationAttributes> getMergedRepeatableAnnotationAttributes(Class<? extends Annotation> annotationType, Class<? extends Annotation> containerType, boolean classValuesAsString, boolean sortByReversedMetaDistance) Retrieve all repeatable annotations of the given type within the annotation hierarchy above the underlying element (as direct annotation or meta-annotation); and for each annotation found, merge that annotation's attributes with matching attributes from annotations in lower levels of the annotation hierarchy and store the results in an instance ofAnnotationAttributes
.@AliasFor
semantics are fully supported, both within a single annotation and within annotation hierarchies.If the
sortByReversedMetaDistance
flag is set totrue
, the results will be sorted inreversed
order based on each annotation's meta distance, which effectively orders meta-annotations before annotations that are declared directly on the underlying element.- Parameters:
annotationType
- the annotation type to findcontainerType
- the type of the container that holds the annotationsclassValuesAsString
- whether to convert class references toString
class names for exposure as values in the returnedAnnotationAttributes
, instead ofClass
references which might potentially have to be loaded firstsortByReversedMetaDistance
-true
if the results should be sorted in reversed order based on each annotation's meta distance- Returns:
- the set of all merged repeatable
AnnotationAttributes
found, or an empty set if none were found - Since:
- 6.1
- See Also:
-
getMergedRepeatableAnnotationAttributes
default Set<AnnotationAttributes> getMergedRepeatableAnnotationAttributes(Class<? extends Annotation> annotationType, Class<? extends Annotation> containerType, Predicate<MergedAnnotation<? extends Annotation>> predicate, boolean classValuesAsString, boolean sortByReversedMetaDistance) Retrieve all repeatable annotations of the given type within the annotation hierarchy above the underlying element (as direct annotation or meta-annotation); and for each annotation found, merge that annotation's attributes with matching attributes from annotations in lower levels of the annotation hierarchy and store the results in an instance ofAnnotationAttributes
.@AliasFor
semantics are fully supported, both within a single annotation and within annotation hierarchies.The supplied
Predicate
will be used to filter the results. For example, supplymergedAnnotation -> true
to include all annotations in the results; supplyMergedAnnotation::isDirectlyPresent
to limit the results to directly declared annotations, etc.If the
sortByReversedMetaDistance
flag is set totrue
, the results will be sorted inreversed
order based on each annotation's meta distance, which effectively orders meta-annotations before annotations that are declared directly on the underlying element.- Parameters:
annotationType
- the annotation type to findcontainerType
- the type of the container that holds the annotationspredicate
- aPredicate
to apply to eachMergedAnnotation
to determine if it should be included in the resultsclassValuesAsString
- whether to convert class references toString
class names for exposure as values in the returnedAnnotationAttributes
, instead ofClass
references which might potentially have to be loaded firstsortByReversedMetaDistance
-true
if the results should be sorted in reversed order based on each annotation's meta distance- Returns:
- the set of all merged repeatable
AnnotationAttributes
found, or an empty set if none were found - Since:
- 6.1.2
- See Also:
-