diff --git a/spring-boot-project/spring-boot/src/main/java/org/springframework/boot/sql/init/dependency/AnnotationDependsOnDatabaseInitializationDetector.java b/spring-boot-project/spring-boot/src/main/java/org/springframework/boot/sql/init/dependency/AnnotationDependsOnDatabaseInitializationDetector.java index 6d76427aef..ae947bc01f 100644 --- a/spring-boot-project/spring-boot/src/main/java/org/springframework/boot/sql/init/dependency/AnnotationDependsOnDatabaseInitializationDetector.java +++ b/spring-boot-project/spring-boot/src/main/java/org/springframework/boot/sql/init/dependency/AnnotationDependsOnDatabaseInitializationDetector.java @@ -33,7 +33,7 @@ class AnnotationDependsOnDatabaseInitializationDetector implements DependsOnData public Set detect(ConfigurableListableBeanFactory beanFactory) { Set dependentBeans = new HashSet<>(); for (String beanName : beanFactory.getBeanDefinitionNames()) { - if (beanFactory.findAnnotationOnBean(beanName, DependsOnDatabaseInitialization.class) != null) { + if (beanFactory.findAnnotationOnBean(beanName, DependsOnDatabaseInitialization.class, false) != null) { dependentBeans.add(beanName); } } diff --git a/spring-boot-project/spring-boot/src/test/java/org/springframework/boot/jdbc/AbstractDataSourceInitializerDependencyConfigurationTests.java b/spring-boot-project/spring-boot/src/test/java/org/springframework/boot/jdbc/AbstractDataSourceInitializerDependencyConfigurationTests.java index e4a8ff23ff..474bec0266 100644 --- a/spring-boot-project/spring-boot/src/test/java/org/springframework/boot/jdbc/AbstractDataSourceInitializerDependencyConfigurationTests.java +++ b/spring-boot-project/spring-boot/src/test/java/org/springframework/boot/jdbc/AbstractDataSourceInitializerDependencyConfigurationTests.java @@ -40,11 +40,13 @@ import static org.assertj.core.api.Assertions.assertThat; class AbstractDataSourceInitializerDependencyConfigurationTests { @Test - void beanThatDependsOnDatabaseInitializationDependsOnAbstractDataSourceInitializerBeans() { + void beansThatDependOnDatabaseInitializationDependOnAbstractDataSourceInitializerBeans() { try (AnnotationConfigApplicationContext context = new AnnotationConfigApplicationContext( TestConfiguration.class)) { - assertThat(context.getBeanFactory().getBeanDefinition("dependsOnDataSourceInitialization").getDependsOn()) - .contains("initializer"); + assertThat(context.getBeanFactory().getBeanDefinition("factoryMethodDependsOnDatabaseInitialization") + .getDependsOn()).contains("initializer"); + assertThat(context.getBeanFactory().getBeanDefinition("beanClassDependsOnDatabaseInitialization") + .getDependsOn()).contains("initializer"); } } @@ -59,10 +61,15 @@ class AbstractDataSourceInitializerDependencyConfigurationTests { @Bean @DependsOnDatabaseInitialization - String dependsOnDataSourceInitialization() { + String factoryMethodDependsOnDatabaseInitialization() { return "test"; } + @Bean + DatabaseInitializationDependent beanClassDependsOnDatabaseInitialization() { + return new DatabaseInitializationDependent(); + } + @Bean AbstractDataSourceInitializer initializer(DataSource dataSource, ResourceLoader resourceLoader) { return new AbstractDataSourceInitializer(dataSource, resourceLoader) { @@ -82,4 +89,9 @@ class AbstractDataSourceInitializerDependencyConfigurationTests { } + @DependsOnDatabaseInitialization + static class DatabaseInitializationDependent { + + } + }