diff --git a/spring-core/src/main/java/org/springframework/core/annotation/AnnotationTypeMapping.java b/spring-core/src/main/java/org/springframework/core/annotation/AnnotationTypeMapping.java index c865b0a222b..bab16eaeda6 100644 --- a/spring-core/src/main/java/org/springframework/core/annotation/AnnotationTypeMapping.java +++ b/spring-core/src/main/java/org/springframework/core/annotation/AnnotationTypeMapping.java @@ -646,6 +646,9 @@ final class AnnotationTypeMapping { boolean isDefaultValue = (value == null || isEquivalentToDefaultValue(attribute, value, valueExtractor)); if (isDefaultValue || ObjectUtils.nullSafeEquals(lastValue, value)) { + if (result == -1) { + result = this.indexes[i]; + } continue; } if (lastValue != null && !ObjectUtils.nullSafeEquals(lastValue, value)) { diff --git a/spring-core/src/test/java/org/springframework/core/annotation/AnnotationTypeMappingsTests.java b/spring-core/src/test/java/org/springframework/core/annotation/AnnotationTypeMappingsTests.java index fd3f12b7cc1..c90fd3012bf 100644 --- a/spring-core/src/test/java/org/springframework/core/annotation/AnnotationTypeMappingsTests.java +++ b/spring-core/src/test/java/org/springframework/core/annotation/AnnotationTypeMappingsTests.java @@ -368,13 +368,13 @@ class AnnotationTypeMappingsTests { } @Test - void resolveMirrorsWhenOnlyHasDefaultValuesResolvesNone() { + void resolveMirrorsWhenOnlyHasDefaultValuesUsesFirst() { AnnotationTypeMapping mapping = AnnotationTypeMappings.forAnnotationType( AliasPair.class).get(0); Method[] resolved = resolveMirrorSets(mapping, WithDefaultValueAliasPair.class, AliasPair.class); - assertThat(resolved[0]).isNull(); - assertThat(resolved[1]).isNull(); + assertThat(resolved[0].getName()).isEqualTo("a"); + assertThat(resolved[1].getName()).isEqualTo("a"); } @Test