From fbf8e37f9451f9ba56b7afaf232570b2e886a7de Mon Sep 17 00:00:00 2001 From: Erik van Paassen Date: Tue, 3 Nov 2020 17:59:35 +0100 Subject: [PATCH] Add FullyQualifiedAnnotationBeanNameGenerator.INSTANCE Adds a static INSTANCE to FullyQualifiedAnnotationBeanNameGenerator, just like its parent class, AnnotationBeanNameGenerator, does. The class doesn't have any state and overriding/hiding the INSTANCE of the superclass, this prevents unintended use of a regular AnnotationBeanNameGenerator through FullyQualifiedAnnotationBeanNameGenerator.INSTANCE. --- .../annotation/ConfigurationClassPostProcessor.java | 2 +- .../FullyQualifiedAnnotationBeanNameGenerator.java | 8 ++++++++ 2 files changed, 9 insertions(+), 1 deletion(-) diff --git a/spring-context/src/main/java/org/springframework/context/annotation/ConfigurationClassPostProcessor.java b/spring-context/src/main/java/org/springframework/context/annotation/ConfigurationClassPostProcessor.java index fe6cac14d23..c1ca0616e4d 100644 --- a/spring-context/src/main/java/org/springframework/context/annotation/ConfigurationClassPostProcessor.java +++ b/spring-context/src/main/java/org/springframework/context/annotation/ConfigurationClassPostProcessor.java @@ -99,7 +99,7 @@ public class ConfigurationClassPostProcessor implements BeanDefinitionRegistryPo * @see #setBeanNameGenerator */ public static final AnnotationBeanNameGenerator IMPORT_BEAN_NAME_GENERATOR = - new FullyQualifiedAnnotationBeanNameGenerator(); + FullyQualifiedAnnotationBeanNameGenerator.INSTANCE; private static final String IMPORT_REGISTRY_BEAN_NAME = ConfigurationClassPostProcessor.class.getName() + ".importRegistry"; diff --git a/spring-context/src/main/java/org/springframework/context/annotation/FullyQualifiedAnnotationBeanNameGenerator.java b/spring-context/src/main/java/org/springframework/context/annotation/FullyQualifiedAnnotationBeanNameGenerator.java index 5495535d6a7..b3c418943a3 100644 --- a/spring-context/src/main/java/org/springframework/context/annotation/FullyQualifiedAnnotationBeanNameGenerator.java +++ b/spring-context/src/main/java/org/springframework/context/annotation/FullyQualifiedAnnotationBeanNameGenerator.java @@ -43,6 +43,14 @@ import org.springframework.util.Assert; */ public class FullyQualifiedAnnotationBeanNameGenerator extends AnnotationBeanNameGenerator { + /** + * A convenient constant for a default {@code FullyQualifiedAnnotationBeanNameGenerator} instance, + * as used for configuration-level import purposes. + */ + public static final FullyQualifiedAnnotationBeanNameGenerator INSTANCE = + new FullyQualifiedAnnotationBeanNameGenerator(); + + @Override protected String buildDefaultBeanName(BeanDefinition definition) { String beanClassName = definition.getBeanClassName();