Skip to content

Commit

Permalink
Find annotation without initializing factory beans
Browse files Browse the repository at this point in the history
Closes gh-28977
  • Loading branch information
wilkinsona authored and snicoll committed Dec 17, 2021
1 parent 5d02063 commit 2fec06a
Show file tree
Hide file tree
Showing 2 changed files with 17 additions and 5 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -33,7 +33,7 @@ class AnnotationDependsOnDatabaseInitializationDetector implements DependsOnData
public Set<String> detect(ConfigurableListableBeanFactory beanFactory) {
Set<String> 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);
}
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -39,11 +39,13 @@
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");
}
}

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

@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) {
Expand All @@ -81,4 +88,9 @@ protected DataSourceInitializationMode getMode() {

}

@DependsOnDatabaseInitialization
static class DatabaseInitializationDependent {

}

}

0 comments on commit 2fec06a

Please sign in to comment.