org.springframework.core.type
Interface AnnotationMetadata
-
- All Superinterfaces:
- ClassMetadata
- All Known Implementing Classes:
- StandardAnnotationMetadata
public interface AnnotationMetadata extends ClassMetadata
Interface that defines abstract access to the annotations of a specific class, in a form that does not require that class to be loaded yet.- Since:
- 2.5
- Author:
- Juergen Hoeller, Mark Fisher
- See Also:
-
StandardAnnotationMetadata
,MetadataReader.getAnnotationMetadata()
-
Method Summary
Methods Modifier and Type Method and Description Set<MethodMetadata>
getAnnotatedMethods(String annotationType)
Retrieve the method metadata for all methods that are annotated (or meta-annotated) with the given annotation type.Map<String,Object>
getAnnotationAttributes(String annotationType)
Retrieve the attributes of the annotation of the given type, if any (i.e.Map<String,Object>
getAnnotationAttributes(String annotationType, boolean classValuesAsString)
Retrieve the attributes of the annotation of the given type, if any (i.e.Set<String>
getAnnotationTypes()
Return the names of all annotation types defined on the underlying class.Set<String>
getMetaAnnotationTypes(String annotationType)
Return the names of all meta-annotation types defined on the given annotation type of the underlying class.boolean
hasAnnotatedMethods(String annotationType)
Determine whether the underlying class has any methods that are annotated (or meta-annotated) with the given annotation type.boolean
hasAnnotation(String annotationType)
Determine whether the underlying class has an annotation of the given type defined.boolean
hasMetaAnnotation(String metaAnnotationType)
Determine whether the underlying class has an annotation that is itself annotated with the meta-annotation of the given type.boolean
isAnnotated(String annotationType)
Determine whether the underlying class has an annotation or meta-annotation of the given type defined.Methods inherited from interface org.springframework.core.type.ClassMetadata
getClassName, getEnclosingClassName, getInterfaceNames, getMemberClassNames, getSuperClassName, hasEnclosingClass, hasSuperClass, isAbstract, isConcrete, isFinal, isIndependent, isInterface
-
Method Detail
getAnnotationTypes
Set<String> getAnnotationTypes()
Return the names of all annotation types defined on the underlying class.- Returns:
- the annotation type names
getMetaAnnotationTypes
Set<String> getMetaAnnotationTypes(String annotationType)
Return the names of all meta-annotation types defined on the given annotation type of the underlying class.- Parameters:
-
annotationType
- the meta-annotation type to look for - Returns:
- the meta-annotation type names
hasAnnotation
boolean hasAnnotation(String annotationType)
Determine whether the underlying class has an annotation of the given type defined.- Parameters:
-
annotationType
- the annotation type to look for - Returns:
- whether a matching annotation is defined
hasMetaAnnotation
boolean hasMetaAnnotation(String metaAnnotationType)
Determine whether the underlying class has an annotation that is itself annotated with the meta-annotation of the given type.- Parameters:
-
metaAnnotationType
- the meta-annotation type to look for - Returns:
- whether a matching meta-annotation is defined
isAnnotated
boolean isAnnotated(String annotationType)
Determine whether the underlying class has an annotation or meta-annotation of the given type defined.This is equivalent to a "hasAnnotation || hasMetaAnnotation" check. If this method returns
true
, thengetAnnotationAttributes(java.lang.String)
will return a non-null Map.- Parameters:
-
annotationType
- the annotation type to look for - Returns:
- whether a matching annotation is defined
getAnnotationAttributes
Map<String,Object> getAnnotationAttributes(String annotationType)
Retrieve the attributes of the annotation of the given type, if any (i.e. if defined on the underlying class, as direct annotation or as meta-annotation).- Parameters:
-
annotationType
- the annotation type to look for - Returns:
-
a Map of attributes, with the attribute name as key (e.g. "value") and the defined attribute value as Map value. This return value will be
null
if no matching annotation is defined.
getAnnotationAttributes
Map<String,Object> getAnnotationAttributes(String annotationType, boolean classValuesAsString)
Retrieve the attributes of the annotation of the given type, if any (i.e. if defined on the underlying class, as direct annotation or as meta-annotation).- Parameters:
-
annotationType
- the annotation type to look for -
classValuesAsString
- 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 the attribute name as key (e.g. "value") and the defined attribute value as Map value. This return value will be
null
if no matching annotation is defined.
hasAnnotatedMethods
boolean hasAnnotatedMethods(String annotationType)
Determine whether the underlying class has any methods that are annotated (or meta-annotated) with the given annotation type.
getAnnotatedMethods
Set<MethodMetadata> getAnnotatedMethods(String annotationType)
Retrieve the method metadata for all methods that are annotated (or meta-annotated) with the given annotation type.For any returned method,
MethodMetadata.isAnnotated(java.lang.String)
will returntrue
for the given annotation type.- Parameters:
-
annotationType
- the annotation type to look for - Returns:
-
a Set of
MethodMetadata
for methods that have a matching annotation. The return value will be an empty set if no methods match the annotation type.