Document @AliasFor support in AnnotatedTypeMetadata.getAnnotationAttributes()

The Javadoc for getAnnotationAttributes() states that it supports
"attribute overrides on composed annotations"; however, it actually
supports @AliasFor in general, including attribute aliases within a
given annotation.

This commit updates the Javadoc and corresponding tests to reflect that.

Closes gh-31042
This commit is contained in:
Sam Brannen
2023-08-12 17:26:29 +02:00
parent c52bfc0586
commit fb6c325cc0
2 changed files with 11 additions and 5 deletions

View File

@@ -69,8 +69,10 @@ public interface AnnotatedTypeMetadata {
/**
* 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),
* also taking attribute overrides on composed annotations into account.
* defined on the underlying element, as direct annotation or meta-annotation).
* <p>{@link org.springframework.core.annotation.AliasFor @AliasFor} semantics
* are fully supported, both within a single annotation and within annotation
* hierarchies.
* @param annotationName the fully-qualified class name of the annotation
* type to look for
* @return a {@link Map} of attributes, with each annotation attribute name
@@ -84,8 +86,10 @@ public interface AnnotatedTypeMetadata {
/**
* 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),
* also taking attribute overrides on composed annotations into account.
* defined on the underlying element, as direct annotation or meta-annotation).
* <p>{@link org.springframework.core.annotation.AliasFor @AliasFor} semantics
* are fully supported, both within a single annotation and within annotation
* hierarchies.
* @param annotationName the fully-qualified class name of the annotation
* type to look for
* @param classValuesAsString whether to convert class references to String

View File

@@ -214,8 +214,8 @@ class AnnotationMetadataTests {
private void assertMetaAnnotationOverrides(AnnotationMetadata metadata) {
AnnotationAttributes attributes = (AnnotationAttributes) metadata.getAnnotationAttributes(
TestComponentScan.class.getName(), false);
assertThat(attributes.getStringArray("value")).containsExactly("org.example.componentscan");
assertThat(attributes.getStringArray("basePackages")).containsExactly("org.example.componentscan");
assertThat(attributes.getStringArray("value")).isEmpty();
assertThat(attributes.getClassArray("basePackageClasses")).isEmpty();
}
@@ -536,8 +536,10 @@ class AnnotationMetadataTests {
@Target(ElementType.TYPE)
public @interface TestComponentScan {
@AliasFor("basePackages")
String[] value() default {};
@AliasFor("value")
String[] basePackages() default {};
Class<?>[] basePackageClasses() default {};