Overview
Although #20615 introduced the use of @AliasFor for @Component(value) in stereotype annotations (@Service, @Controller, @Repository, @Configuration, @RestController), the framework does not actually rely on @AliasFor support when looking up a component name via stereotype annotations. Rather, the framework has custom annotation parsing logic in AnnotationBeanNameGenerator#determineBeanNameFromAnnotation() which effectively ignores explicit annotation attribute overrides configured via @AliasFor.
Thus, although we can introduce the use of @AliasFor in @ControllerAdvice and @RestControllerAdvice to create aliases for @Component(value) (see #21108), those aliases will not be honored unless we revise the algorithm in AnnotationBeanNameGenerator.
Related Issues
-
20615
-
21108
-
31093
Deliverables
- [x] Revise
AnnotationBeanNameGenerator#determineBeanNameFromAnnotation()to look up@Componentstereotype names using@AliasForsemantics. - [x] Update documentation for
@Componentto inform users that custom stereotypes can make use of@AliasForto create an alias for@Component(value).
Comment From: sbrannen
Current work on this feature can be viewed in the following feature branch: https://github.com/spring-projects/spring-framework/compare/main...sbrannen:spring-framework:issues/gh-31089-Component-stereotype-names-and-AliasFor
Comment From: sbrannen
Reopening to update the Annotations page in the wiki.
Comment From: sbrannen
Updated the wiki page.