From aaa0a2be630694ae83c2ffcbfeceb354e851ffb7 Mon Sep 17 00:00:00 2001 From: Sam Brannen Date: Wed, 23 Aug 2023 16:00:41 +0200 Subject: [PATCH] Test status quo for @Components with multiple declared names --- .../AnnotationBeanNameGeneratorTests.java | 25 +++++++++++++++++++ 1 file changed, 25 insertions(+) diff --git a/spring-context/src/test/java/org/springframework/context/annotation/AnnotationBeanNameGeneratorTests.java b/spring-context/src/test/java/org/springframework/context/annotation/AnnotationBeanNameGeneratorTests.java index 1d127d2102e..ae5a58a286e 100644 --- a/spring-context/src/test/java/org/springframework/context/annotation/AnnotationBeanNameGeneratorTests.java +++ b/spring-context/src/test/java/org/springframework/context/annotation/AnnotationBeanNameGeneratorTests.java @@ -36,6 +36,7 @@ import org.springframework.stereotype.Controller; import org.springframework.stereotype.Service; import static org.assertj.core.api.Assertions.assertThat; +import static org.assertj.core.api.Assertions.assertThatIllegalStateException; /** * Unit tests for {@link AnnotationBeanNameGenerator}. @@ -70,6 +71,20 @@ class AnnotationBeanNameGeneratorTests { assertGeneratedNameIsDefault(ComponentWithBlankName.class); } + @Test + void generateBeanNameForComponentWithDuplicateIdenticalNames() { + assertGeneratedName(ComponentWithDuplicateIdenticalNames.class, "myComponent"); + } + + @Test + void generateBeanNameForComponentWithConflictingNames() { + BeanDefinition bd = annotatedBeanDef(ComponentWithMultipleConflictingNames.class); + assertThatIllegalStateException() + .isThrownBy(() -> generateBeanName(bd)) + .withMessage("Stereotype annotations suggest inconsistent component names: '%s' versus '%s'", + "myComponent", "myService"); + } + @Test void generateBeanNameWithJakartaNamedComponent() { assertGeneratedName(JakartaNamedComponent.class, "myJakartaNamedComponent"); @@ -144,6 +159,16 @@ class AnnotationBeanNameGeneratorTests { private static class ComponentWithBlankName { } + @Component("myComponent") + @Service("myComponent") + static class ComponentWithDuplicateIdenticalNames { + } + + @Component("myComponent") + @Service("myService") + static class ComponentWithMultipleConflictingNames { + } + @Component private static class AnonymousComponent { }