Stop using explicitly aliased value attribute as @Component name
Prior to this commit, if a custom stereotype annotation was meta-annotated with @Component and declared a local String `value` attribute that was explicitly configured (via @AliasFor) as an override for an attribute other than @Component.value, the local `value` attribute was still used as a convention-based override for @Component.value. Consequently, a local `value` attribute was used as a custom @Component name, even when that is clearly not the intent. To address that, this commit revises the logic in AnnotationBeanNameGenerator so that a `value` attribute which is explicitly aliased to something other than @Component.value is no longer used as an explicit @Component name. See gh-34317 Closes gh-34346
This commit is contained in:
@@ -150,18 +150,14 @@ class AnnotationBeanNameGeneratorTests {
|
||||
assertGeneratedName(RestControllerAdviceClass.class, "myRestControllerAdvice");
|
||||
}
|
||||
|
||||
@Test // gh-34317
|
||||
@Test // gh-34317, gh-34346
|
||||
void generateBeanNameFromStereotypeAnnotationWithStringValueAsExplicitAliasForMetaAnnotationOtherThanComponent() {
|
||||
// As of Spring Framework 6.2, "enigma" is incorrectly used as the @Component name.
|
||||
// As of Spring Framework 7.0, the generated name will be "annotationBeanNameGeneratorTests.StereotypeWithoutExplicitName".
|
||||
assertGeneratedName(StereotypeWithoutExplicitName.class, "enigma");
|
||||
assertGeneratedName(StereotypeWithoutExplicitName.class, "annotationBeanNameGeneratorTests.StereotypeWithoutExplicitName");
|
||||
}
|
||||
|
||||
@Test // gh-34317
|
||||
@Test // gh-34317, gh-34346
|
||||
void generateBeanNameFromStereotypeAnnotationWithStringValueAndExplicitAliasForComponentNameWithBlankName() {
|
||||
// As of Spring Framework 6.2, "enigma" is incorrectly used as the @Component name.
|
||||
// As of Spring Framework 7.0, the generated name will be "annotationBeanNameGeneratorTests.StereotypeWithGeneratedName".
|
||||
assertGeneratedName(StereotypeWithGeneratedName.class, "enigma");
|
||||
assertGeneratedName(StereotypeWithGeneratedName.class, "annotationBeanNameGeneratorTests.StereotypeWithGeneratedName");
|
||||
}
|
||||
|
||||
@Test // gh-34317
|
||||
|
||||
Reference in New Issue
Block a user