diff --git a/spring-core/src/main/java/org/springframework/aot/hint/support/RuntimeHintsUtils.java b/spring-core/src/main/java/org/springframework/aot/hint/support/RuntimeHintsUtils.java index 6976b39f04..089860a737 100644 --- a/spring-core/src/main/java/org/springframework/aot/hint/support/RuntimeHintsUtils.java +++ b/spring-core/src/main/java/org/springframework/aot/hint/support/RuntimeHintsUtils.java @@ -35,6 +35,7 @@ import org.springframework.core.annotation.SynthesizedAnnotation; * Utility methods for runtime hints support code. * * @author Stephane Nicoll + * @author Sam Brannen * @since 6.0 */ public abstract class RuntimeHintsUtils { @@ -88,7 +89,8 @@ public abstract class RuntimeHintsUtils { } private static void collectAliasedAnnotations(Set> seen, Set> types, Class annotationType) { - if (seen.contains(annotationType) || Reflective.class.equals(annotationType)) { + if (seen.contains(annotationType) || AliasFor.class.equals(annotationType) || + Reflective.class.equals(annotationType)) { return; } seen.add(annotationType); diff --git a/spring-core/src/test/java/org/springframework/aot/hint/support/RuntimeHintsUtilsTests.java b/spring-core/src/test/java/org/springframework/aot/hint/support/RuntimeHintsUtilsTests.java index 8d57da8762..6d4a3c30ff 100644 --- a/spring-core/src/test/java/org/springframework/aot/hint/support/RuntimeHintsUtilsTests.java +++ b/spring-core/src/test/java/org/springframework/aot/hint/support/RuntimeHintsUtilsTests.java @@ -37,6 +37,7 @@ import static org.assertj.core.api.Assertions.assertThat; * Tests for {@link RuntimeHintsUtils}. * * @author Stephane Nicoll + * @author Sam Brannen */ class RuntimeHintsUtilsTests { @@ -80,6 +81,14 @@ class RuntimeHintsUtilsTests { .hasSize(2); } + @Test // gh-28953 + void registerAnnotationForAliasForShouldNotRegisterSynthesizedAnnotationProxy() { + RuntimeHintsUtils.registerAnnotation(this.hints, AliasFor.class); + assertThat(this.hints.reflection().typeHints()).singleElement() + .satisfies(annotationHint(AliasFor.class)); + assertThat(this.hints.proxies().jdkProxies()).isEmpty(); + } + @Test void registerAnnotationTypeWhereUsedAsAMetaAnnotationRegistersHierarchy() { RuntimeHintsUtils.registerAnnotation(this.hints, RetryWithEnabledFlagInvoker.class);