Class AnnotationBeanNameGenerator
- All Implemented Interfaces:
 BeanNameGenerator
- Direct Known Subclasses:
 FullyQualifiedAnnotationBeanNameGenerator
BeanNameGenerator implementation for bean classes annotated with the
 @Component annotation or
 with another annotation that is itself annotated with @Component as a
 meta-annotation. For example, Spring's stereotype annotations (such as
 @Repository) are
 themselves annotated with @Component.
 Also supports Jakarta EE's ManagedBean and
 JSR-330's Named annotations, if available. Note that
 Spring component annotations always override such standard annotations.
 
If the annotation's value doesn't indicate a bean name, an appropriate name will be built based on the short name of the class (with the first letter lower-cased), unless the first two letters are uppercase. For example:
com.xyz.FooServiceImpl -> fooServiceImpl
com.xyz.URLFooServiceImpl -> URLFooServiceImpl
- Since:
 - 2.5
 - Author:
 - Juergen Hoeller, Mark Fisher
 - See Also:
 
- 
Field Summary
FieldsModifier and TypeFieldDescriptionstatic final AnnotationBeanNameGeneratorA convenient constant for a defaultAnnotationBeanNameGeneratorinstance, as used for component scanning purposes. - 
Constructor Summary
Constructors - 
Method Summary
Modifier and TypeMethodDescriptionprotected StringbuildDefaultBeanName(BeanDefinition definition) Derive a default bean name from the given bean definition.protected StringbuildDefaultBeanName(BeanDefinition definition, BeanDefinitionRegistry registry) Derive a default bean name from the given bean definition.protected StringdetermineBeanNameFromAnnotation(AnnotatedBeanDefinition annotatedDef) Derive a bean name from one of the annotations on the class.generateBeanName(BeanDefinition definition, BeanDefinitionRegistry registry) Generate a bean name for the given bean definition.protected booleanisStereotypeWithNameValue(String annotationType, Set<String> metaAnnotationTypes, Map<String, Object> attributes) Check whether the given annotation is a stereotype that is allowed to suggest a component name through its annotationvalue(). 
- 
Field Details
- 
INSTANCE
A convenient constant for a defaultAnnotationBeanNameGeneratorinstance, as used for component scanning purposes.- Since:
 - 5.2
 
 
 - 
 - 
Constructor Details
- 
AnnotationBeanNameGenerator
public AnnotationBeanNameGenerator() 
 - 
 - 
Method Details
- 
generateBeanName
Description copied from interface:BeanNameGeneratorGenerate a bean name for the given bean definition.- Specified by:
 generateBeanNamein interfaceBeanNameGenerator- Parameters:
 definition- the bean definition to generate a name forregistry- the bean definition registry that the given definition is supposed to be registered with- Returns:
 - the generated bean name
 
 - 
determineBeanNameFromAnnotation
Derive a bean name from one of the annotations on the class.- Parameters:
 annotatedDef- the annotation-aware bean definition- Returns:
 - the bean name, or 
nullif none is found 
 - 
isStereotypeWithNameValue
protected boolean isStereotypeWithNameValue(String annotationType, Set<String> metaAnnotationTypes, @Nullable Map<String, Object> attributes) Check whether the given annotation is a stereotype that is allowed to suggest a component name through its annotationvalue().- Parameters:
 annotationType- the name of the annotation class to checkmetaAnnotationTypes- the names of meta-annotations on the given annotationattributes- the map of attributes for the given annotation- Returns:
 - whether the annotation qualifies as a stereotype with component name
 
 - 
buildDefaultBeanName
Derive a default bean name from the given bean definition.The default implementation delegates to
buildDefaultBeanName(BeanDefinition).- Parameters:
 definition- the bean definition to build a bean name forregistry- the registry that the given bean definition is being registered with- Returns:
 - the default bean name (never 
null) 
 - 
buildDefaultBeanName
Derive a default bean name from the given bean definition.The default implementation simply builds a decapitalized version of the short class name: e.g. "mypackage.MyJdbcDao" → "myJdbcDao".
Note that inner classes will thus have names of the form "outerClassName.InnerClassName", which because of the period in the name may be an issue if you are autowiring by name.
- Parameters:
 definition- the bean definition to build a bean name for- Returns:
 - the default bean name (never 
null) 
 
 -