## 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
`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, 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`, then `getAnnotationAttributes(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 return `true` 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.