Skip to content

Commit 0c0acb4

Browse files
committed
Polish "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
1 parent 7427304 commit 0c0acb4

File tree

8 files changed

+18
-20
lines changed

8 files changed

+18
-20
lines changed

spring-boot-project/spring-boot-autoconfigure/src/main/java/org/springframework/boot/autoconfigure/domain/EntityScanPackages.java

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
/*
2-
* Copyright 2012-2023 the original author or authors.
2+
* Copyright 2012-2024 the original author or authors.
33
*
44
* Licensed under the Apache License, Version 2.0 (the "License");
55
* you may not use this file except in compliance with the License.
@@ -28,7 +28,7 @@
2828
import org.springframework.beans.factory.NoSuchBeanDefinitionException;
2929
import org.springframework.beans.factory.config.BeanDefinition;
3030
import org.springframework.beans.factory.support.BeanDefinitionRegistry;
31-
import org.springframework.beans.factory.support.GenericBeanDefinition;
31+
import org.springframework.beans.factory.support.RootBeanDefinition;
3232
import org.springframework.context.ConfigurableApplicationContext;
3333
import org.springframework.context.annotation.ImportBeanDefinitionRegistrar;
3434
import org.springframework.core.annotation.AnnotationAttributes;
@@ -159,7 +159,7 @@ private Set<String> getPackagesToScan(AnnotationMetadata metadata) {
159159

160160
}
161161

162-
static class EntityScanPackagesBeanDefinition extends GenericBeanDefinition {
162+
static class EntityScanPackagesBeanDefinition extends RootBeanDefinition {
163163

164164
private final Set<String> packageNames = new LinkedHashSet<>();
165165

spring-boot-project/spring-boot-autoconfigure/src/main/java/org/springframework/boot/autoconfigure/webservices/WebServicesAutoConfiguration.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
/*
2-
* Copyright 2012-2023 the original author or authors.
2+
* Copyright 2012-2024 the original author or authors.
33
*
44
* Licensed under the Apache License, Version 2.0 (the "License");
55
* you may not use this file except in compliance with the License.

spring-boot-project/spring-boot-autoconfigure/src/test/java/org/springframework/boot/autoconfigure/SharedMetadataReaderFactoryContextInitializerTests.java

Lines changed: 3 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
/*
2-
* Copyright 2012-2023 the original author or authors.
2+
* Copyright 2012-2024 the original author or authors.
33
*
44
* Licensed under the Apache License, Version 2.0 (the "License");
55
* you may not use this file except in compliance with the License.
@@ -22,7 +22,6 @@
2222

2323
import org.springframework.beans.factory.config.BeanDefinition;
2424
import org.springframework.beans.factory.config.ConfigurableListableBeanFactory;
25-
import org.springframework.beans.factory.support.AbstractBeanDefinition;
2625
import org.springframework.beans.factory.support.BeanDefinitionBuilder;
2726
import org.springframework.beans.factory.support.BeanDefinitionRegistry;
2827
import org.springframework.beans.factory.support.BeanDefinitionRegistryPostProcessor;
@@ -70,10 +69,9 @@ void initializeWhenUsingSupplierDecorates() {
7069
BeanDefinitionRegistry registry = (BeanDefinitionRegistry) context.getBeanFactory();
7170
ConfigurationClassPostProcessor configurationAnnotationPostProcessor = mock(
7271
ConfigurationClassPostProcessor.class);
73-
AbstractBeanDefinition beanDefinition = BeanDefinitionBuilder
74-
.rootBeanDefinition(ConfigurationClassPostProcessor.class)
72+
BeanDefinition beanDefinition = BeanDefinitionBuilder
73+
.rootBeanDefinition(ConfigurationClassPostProcessor.class, () -> configurationAnnotationPostProcessor)
7574
.getBeanDefinition();
76-
beanDefinition.setInstanceSupplier(() -> configurationAnnotationPostProcessor);
7775
registry.registerBeanDefinition(AnnotationConfigUtils.CONFIGURATION_ANNOTATION_PROCESSOR_BEAN_NAME,
7876
beanDefinition);
7977
CachingMetadataReaderFactoryPostProcessor postProcessor = new CachingMetadataReaderFactoryPostProcessor(

spring-boot-project/spring-boot-test-autoconfigure/src/main/java/org/springframework/boot/test/autoconfigure/restdocs/RestDocumentationContextProviderRegistrar.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
/*
2-
* Copyright 2012-2023 the original author or authors.
2+
* Copyright 2012-2024 the original author or authors.
33
*
44
* Licensed under the Apache License, Version 2.0 (the "License");
55
* you may not use this file except in compliance with the License.

spring-boot-project/spring-boot/src/main/java/org/springframework/boot/context/properties/BoundConfigurationProperties.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -80,8 +80,8 @@ static void register(BeanDefinitionRegistry registry) {
8080
Assert.notNull(registry, "Registry must not be null");
8181
if (!registry.containsBeanDefinition(BEAN_NAME)) {
8282
BeanDefinition definition = BeanDefinitionBuilder.rootBeanDefinition(BoundConfigurationProperties.class)
83+
.setRole(BeanDefinition.ROLE_INFRASTRUCTURE)
8384
.getBeanDefinition();
84-
definition.setRole(BeanDefinition.ROLE_INFRASTRUCTURE);
8585
registry.registerBeanDefinition(BEAN_NAME, definition);
8686
}
8787
}

spring-boot-project/spring-boot/src/main/java/org/springframework/boot/web/servlet/ServletComponentScanRegistrar.java

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
/*
2-
* Copyright 2012-2023 the original author or authors.
2+
* Copyright 2012-2024 the original author or authors.
33
*
44
* Licensed under the Apache License, Version 2.0 (the "License");
55
* you may not use this file except in compliance with the License.
@@ -24,7 +24,7 @@
2424

2525
import org.springframework.beans.factory.config.BeanDefinition;
2626
import org.springframework.beans.factory.support.BeanDefinitionRegistry;
27-
import org.springframework.beans.factory.support.GenericBeanDefinition;
27+
import org.springframework.beans.factory.support.RootBeanDefinition;
2828
import org.springframework.context.annotation.ImportBeanDefinitionRegistrar;
2929
import org.springframework.core.annotation.AnnotationAttributes;
3030
import org.springframework.core.type.AnnotationMetadata;
@@ -79,7 +79,7 @@ private Set<String> getPackagesToScan(AnnotationMetadata metadata) {
7979
return packagesToScan;
8080
}
8181

82-
static final class ServletComponentRegisteringPostProcessorBeanDefinition extends GenericBeanDefinition {
82+
static final class ServletComponentRegisteringPostProcessorBeanDefinition extends RootBeanDefinition {
8383

8484
private final Set<String> packageNames = new LinkedHashSet<>();
8585

spring-boot-project/spring-boot/src/test/java/org/springframework/boot/context/properties/ConfigurationPropertiesBeanRegistrarTests.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,7 @@
2424
import org.springframework.beans.factory.config.BeanDefinition;
2525
import org.springframework.beans.factory.support.BeanDefinitionRegistry;
2626
import org.springframework.beans.factory.support.DefaultListableBeanFactory;
27-
import org.springframework.beans.factory.support.GenericBeanDefinition;
27+
import org.springframework.beans.factory.support.RootBeanDefinition;
2828
import org.springframework.boot.context.properties.bind.BindMethod;
2929
import org.springframework.context.annotation.Primary;
3030
import org.springframework.context.annotation.Scope;
@@ -60,7 +60,7 @@ void registerWhenNotAlreadyRegisteredAddBeanDefinition() {
6060
@Test
6161
void registerWhenAlreadyContainsNameDoesNotReplace() {
6262
String beanName = "beancp-" + BeanConfigurationProperties.class.getName();
63-
this.registry.registerBeanDefinition(beanName, new GenericBeanDefinition());
63+
this.registry.registerBeanDefinition(beanName, new RootBeanDefinition());
6464
this.registrar.register(BeanConfigurationProperties.class);
6565
BeanDefinition definition = this.registry.getBeanDefinition(beanName);
6666
assertThat(definition).isNotNull();

spring-boot-project/spring-boot/src/test/java/org/springframework/boot/context/properties/ConfigurationPropertiesTests.java

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -51,8 +51,8 @@
5151
import org.springframework.beans.factory.config.BeanDefinition;
5252
import org.springframework.beans.factory.config.ConfigurableListableBeanFactory;
5353
import org.springframework.beans.factory.support.AbstractBeanDefinition;
54+
import org.springframework.beans.factory.support.BeanDefinitionBuilder;
5455
import org.springframework.beans.factory.support.BeanDefinitionRegistry;
55-
import org.springframework.beans.factory.support.GenericBeanDefinition;
5656
import org.springframework.beans.factory.support.RootBeanDefinition;
5757
import org.springframework.boot.SpringApplication;
5858
import org.springframework.boot.context.properties.bind.BindException;
@@ -397,9 +397,9 @@ protected void onRefresh() {
397397

398398
};
399399
this.context.register(WithFactoryBeanConfiguration.class);
400-
GenericBeanDefinition beanDefinition = new GenericBeanDefinition();
401-
beanDefinition.setBeanClass(FactoryBeanTester.class);
402-
beanDefinition.setAutowireMode(AbstractBeanDefinition.AUTOWIRE_BY_TYPE);
400+
BeanDefinition beanDefinition = BeanDefinitionBuilder.rootBeanDefinition(FactoryBeanTester.class)
401+
.setAutowireMode(AbstractBeanDefinition.AUTOWIRE_BY_TYPE)
402+
.getBeanDefinition();
403403
this.context.registerBeanDefinition("test", beanDefinition);
404404
this.context.refresh();
405405
assertThat(WithFactoryBeanConfiguration.factoryBeanInitialized).as("Not Initialized").isTrue();

0 commit comments

Comments
 (0)