Use RootBeanDefinition if possible

This commit adapts code that was using GenericBeanDefinition to use
RootBeanDefinition instead. Spring Framework recommend to use
RootBeanDefinition if it's pre-determined as root bean.

See gh-42611
This commit is contained in:
Yanming Zhou
2024-10-14 15:28:21 +08:00
committed by Stéphane Nicoll
parent f3d86b65a1
commit 7427304b3d
4 changed files with 6 additions and 6 deletions

View File

@@ -124,7 +124,7 @@ public class WebServicesAutoConfiguration {
Function<Resource, T> beanSupplier, BeanDefinitionRegistry registry) {
for (Resource resource : getResources(location, pattern)) {
BeanDefinition beanDefinition = BeanDefinitionBuilder
.genericBeanDefinition(type, () -> beanSupplier.apply(resource))
.rootBeanDefinition(type, () -> beanSupplier.apply(resource))
.getBeanDefinition();
registry.registerBeanDefinition(StringUtils.stripFilenameExtension(resource.getFilename()),
beanDefinition);

View File

@@ -70,10 +70,10 @@ class SharedMetadataReaderFactoryContextInitializerTests {
BeanDefinitionRegistry registry = (BeanDefinitionRegistry) context.getBeanFactory();
ConfigurationClassPostProcessor configurationAnnotationPostProcessor = mock(
ConfigurationClassPostProcessor.class);
BeanDefinition beanDefinition = BeanDefinitionBuilder
.genericBeanDefinition(ConfigurationClassPostProcessor.class)
AbstractBeanDefinition beanDefinition = BeanDefinitionBuilder
.rootBeanDefinition(ConfigurationClassPostProcessor.class)
.getBeanDefinition();
((AbstractBeanDefinition) beanDefinition).setInstanceSupplier(() -> configurationAnnotationPostProcessor);
beanDefinition.setInstanceSupplier(() -> configurationAnnotationPostProcessor);
registry.registerBeanDefinition(AnnotationConfigUtils.CONFIGURATION_ANNOTATION_PROCESSOR_BEAN_NAME,
beanDefinition);
CachingMetadataReaderFactoryPostProcessor postProcessor = new CachingMetadataReaderFactoryPostProcessor(

View File

@@ -39,7 +39,7 @@ class RestDocumentationContextProviderRegistrar implements ImportBeanDefinitionR
Map<String, Object> annotationAttributes = importingClassMetadata
.getAnnotationAttributes(AutoConfigureRestDocs.class.getName());
BeanDefinitionBuilder definitionBuilder = BeanDefinitionBuilder
.genericBeanDefinition(ManualRestDocumentation.class);
.rootBeanDefinition(ManualRestDocumentation.class);
String outputDir = (String) annotationAttributes.get("outputDir");
if (StringUtils.hasText(outputDir)) {
definitionBuilder.addConstructorArgValue(outputDir);

View File

@@ -79,7 +79,7 @@ public class BoundConfigurationProperties {
static void register(BeanDefinitionRegistry registry) {
Assert.notNull(registry, "Registry must not be null");
if (!registry.containsBeanDefinition(BEAN_NAME)) {
BeanDefinition definition = BeanDefinitionBuilder.genericBeanDefinition(BoundConfigurationProperties.class)
BeanDefinition definition = BeanDefinitionBuilder.rootBeanDefinition(BoundConfigurationProperties.class)
.getBeanDefinition();
definition.setRole(BeanDefinition.ROLE_INFRASTRUCTURE);
registry.registerBeanDefinition(BEAN_NAME, definition);