Class FullyQualifiedAnnotationBeanNameGenerator

java.lang.Object
org.springframework.context.annotation.AnnotationBeanNameGenerator
org.springframework.context.annotation.FullyQualifiedAnnotationBeanNameGenerator
All Implemented Interfaces:
BeanNameGenerator

public class FullyQualifiedAnnotationBeanNameGenerator extends AnnotationBeanNameGenerator
An extension of AnnotationBeanNameGenerator that uses the fully qualified class name as the default bean name if an explicit bean name is not supplied via a supported type-level annotation such as @Component (see AnnotationBeanNameGenerator for details on supported annotations).

Favor this bean naming strategy over AnnotationBeanNameGenerator if you run into naming conflicts due to multiple autodetected components having the same non-qualified class name (i.e., classes with identical names but residing in different packages).

Note that an instance of this class is used by default for configuration-level import purposes; whereas, the default for component scanning purposes is a plain AnnotationBeanNameGenerator.

Since:
5.2.3
Author:
Juergen Hoeller, Sam Brannen
See Also:
  • Field Details

    • INSTANCE

      public static final FullyQualifiedAnnotationBeanNameGenerator INSTANCE
      A convenient constant for a default FullyQualifiedAnnotationBeanNameGenerator instance, as used for configuration-level import purposes.
      Since:
      5.2.11
  • Constructor Details

    • FullyQualifiedAnnotationBeanNameGenerator

      public FullyQualifiedAnnotationBeanNameGenerator()
  • Method Details

    • buildDefaultBeanName

      protected String buildDefaultBeanName(BeanDefinition definition)
      Description copied from class: AnnotationBeanNameGenerator
      Derive a default bean name from the given bean definition.

      The default implementation simply builds a decapitalized version of the short class name: for example, "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.

      Overrides:
      buildDefaultBeanName in class AnnotationBeanNameGenerator
      Parameters:
      definition - the bean definition to build a bean name for
      Returns:
      the default bean name (never null)