Skip to content

Commit 2fec06a

Browse files
wilkinsonasnicoll
authored andcommitted
Find annotation without initializing factory beans
Closes gh-28977
1 parent 5d02063 commit 2fec06a

File tree

2 files changed

+17
-5
lines changed

2 files changed

+17
-5
lines changed

spring-boot-project/spring-boot/src/main/java/org/springframework/boot/sql/init/dependency/AnnotationDependsOnDatabaseInitializationDetector.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -33,7 +33,7 @@ class AnnotationDependsOnDatabaseInitializationDetector implements DependsOnData
3333
public Set<String> detect(ConfigurableListableBeanFactory beanFactory) {
3434
Set<String> dependentBeans = new HashSet<>();
3535
for (String beanName : beanFactory.getBeanDefinitionNames()) {
36-
if (beanFactory.findAnnotationOnBean(beanName, DependsOnDatabaseInitialization.class) != null) {
36+
if (beanFactory.findAnnotationOnBean(beanName, DependsOnDatabaseInitialization.class, false) != null) {
3737
dependentBeans.add(beanName);
3838
}
3939
}

spring-boot-project/spring-boot/src/test/java/org/springframework/boot/jdbc/AbstractDataSourceInitializerDependencyConfigurationTests.java

Lines changed: 16 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -39,11 +39,13 @@
3939
class AbstractDataSourceInitializerDependencyConfigurationTests {
4040

4141
@Test
42-
void beanThatDependsOnDatabaseInitializationDependsOnAbstractDataSourceInitializerBeans() {
42+
void beansThatDependOnDatabaseInitializationDependOnAbstractDataSourceInitializerBeans() {
4343
try (AnnotationConfigApplicationContext context = new AnnotationConfigApplicationContext(
4444
TestConfiguration.class)) {
45-
assertThat(context.getBeanFactory().getBeanDefinition("dependsOnDataSourceInitialization").getDependsOn())
46-
.contains("initializer");
45+
assertThat(context.getBeanFactory().getBeanDefinition("factoryMethodDependsOnDatabaseInitialization")
46+
.getDependsOn()).contains("initializer");
47+
assertThat(context.getBeanFactory().getBeanDefinition("beanClassDependsOnDatabaseInitialization")
48+
.getDependsOn()).contains("initializer");
4749
}
4850
}
4951

@@ -58,10 +60,15 @@ DataSource dataSource() {
5860

5961
@Bean
6062
@DependsOnDatabaseInitialization
61-
String dependsOnDataSourceInitialization() {
63+
String factoryMethodDependsOnDatabaseInitialization() {
6264
return "test";
6365
}
6466

67+
@Bean
68+
DatabaseInitializationDependent beanClassDependsOnDatabaseInitialization() {
69+
return new DatabaseInitializationDependent();
70+
}
71+
6572
@Bean
6673
AbstractDataSourceInitializer initializer(DataSource dataSource, ResourceLoader resourceLoader) {
6774
return new AbstractDataSourceInitializer(dataSource, resourceLoader) {
@@ -81,4 +88,9 @@ protected DataSourceInitializationMode getMode() {
8188

8289
}
8390

91+
@DependsOnDatabaseInitialization
92+
static class DatabaseInitializationDependent {
93+
94+
}
95+
8496
}

0 commit comments

Comments
 (0)