Interface AnnotationMetadata

All Superinterfaces:
AnnotatedTypeMetadata, ClassMetadata
All Known Implementing Classes:
StandardAnnotationMetadata

public interface AnnotationMetadata extends ClassMetadata, AnnotatedTypeMetadata
Interface that defines abstract access to the annotations on a specific class, in a form that does not require that class to be loaded yet.

WARNING: If an annotation cannot be loaded because one of its attributes references a Class or Enum that is not present in the classpath, that annotation will not be accessible via the AnnotationMetadata API. To assist with diagnosing such scenarios, you can set the log level for "org.springframework.core.annotation.MergedAnnotation" to DEBUG, INFO, or WARN.

Since:
2.5
Author:
Juergen Hoeller, Mark Fisher, Phillip Webb, Sam Brannen
See Also:
  • Method Details

    • getAnnotationTypes

      default Set<String> getAnnotationTypes()
      Get the fully-qualified class names of all annotation types that are directly present on the underlying class.
      Returns:
      the annotation type names
    • getMetaAnnotationTypes

      default Set<String> getMetaAnnotationTypes(String annotationName)
      Get the fully-qualified class names of all meta-annotation types that are present on the given annotation type on the underlying class.
      Parameters:
      annotationName - the fully-qualified class name of the annotation type to look for meta-annotations on
      Returns:
      the meta-annotation type names, or an empty set if none found
    • hasAnnotation

      default boolean hasAnnotation(String annotationName)
      Determine whether an annotation of the given type is directly present on the underlying class.
      Parameters:
      annotationName - the fully-qualified class name of the annotation type to look for
      Returns:
      true if a matching annotation is directly present
    • hasMetaAnnotation

      default boolean hasMetaAnnotation(String metaAnnotationName)
      Determine whether the underlying class has an annotation that is itself annotated with the meta-annotation of the given type.
      Parameters:
      metaAnnotationName - the fully-qualified class name of the meta-annotation type to look for
      Returns:
      true if a matching meta-annotation is present
    • hasAnnotatedMethods

      default boolean hasAnnotatedMethods(String annotationName)
      Determine whether the underlying class has any methods that are annotated (or meta-annotated) with the given annotation type.
      Parameters:
      annotationName - the fully-qualified class name of the annotation type to look for
    • getAnnotatedMethods

      Set<MethodMetadata> getAnnotatedMethods(String annotationName)
      Retrieve the method metadata for all methods that are annotated (or meta-annotated) with the given annotation type.

      For any returned method, AnnotatedTypeMetadata.isAnnotated(java.lang.String) will return true for the given annotation type.

      Parameters:
      annotationName - the fully-qualified class name of 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.
    • getDeclaredMethods

      Set<MethodMetadata> getDeclaredMethods()
      Retrieve the method metadata for all user-declared methods on the underlying class, preserving declaration order as far as possible.
      Returns:
      a set of MethodMetadata
      Since:
      6.0
    • introspect

      static AnnotationMetadata introspect(Class<?> type)
      Factory method to create a new AnnotationMetadata instance for the given class using standard reflection.
      Parameters:
      type - the class to introspect
      Returns:
      a new AnnotationMetadata instance
      Since:
      5.2