Skip to content

Commit 94f94f3

Browse files
committed
Polish "Detect AbstractDataSourceInitializers as DB initializers"
See gh-27215
1 parent 433f3d6 commit 94f94f3

File tree

3 files changed

+87
-8
lines changed

3 files changed

+87
-8
lines changed

spring-boot-project/spring-boot/src/main/java/org/springframework/boot/jdbc/AbstractDataSourceInitializerDatabaseInitializerDetector.java

Lines changed: 1 addition & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
/*
2-
* Copyright 2021 the original author or authors.
2+
* Copyright 2012-2021 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.
@@ -34,9 +34,4 @@ protected Set<Class<?>> getDatabaseInitializerBeanTypes() {
3434
return Collections.singleton(AbstractDataSourceInitializer.class);
3535
}
3636

37-
@Override
38-
public int getOrder() {
39-
return 1;
40-
}
41-
4237
}

spring-boot-project/spring-boot/src/main/resources/META-INF/spring.factories

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -82,11 +82,11 @@ org.springframework.boot.diagnostics.LoggingFailureAnalysisReporter
8282
# Database Initializer Detectors
8383
org.springframework.boot.sql.init.dependency.DatabaseInitializerDetector=\
8484
org.springframework.boot.flyway.FlywayDatabaseInitializerDetector,\
85+
org.springframework.boot.jdbc.AbstractDataSourceInitializerDatabaseInitializerDetector,\
8586
org.springframework.boot.jdbc.init.DataSourceScriptDatabaseInitializerDetector,\
8687
org.springframework.boot.liquibase.LiquibaseDatabaseInitializerDetector,\
8788
org.springframework.boot.orm.jpa.JpaDatabaseInitializerDetector,\
88-
org.springframework.boot.r2dbc.init.R2dbcScriptDatabaseInitializerDetector,\
89-
org.springframework.boot.jdbc.AbstractDataSourceInitializerDatabaseInitializerDetector
89+
org.springframework.boot.r2dbc.init.R2dbcScriptDatabaseInitializerDetector
9090

9191
# Depends On Database Initialization Detectors
9292
org.springframework.boot.sql.init.dependency.DependsOnDatabaseInitializationDetector=\
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,84 @@
1+
/*
2+
* Copyright 2012-2021 the original author or authors.
3+
*
4+
* Licensed under the Apache License, Version 2.0 (the "License");
5+
* you may not use this file except in compliance with the License.
6+
* You may obtain a copy of the License at
7+
*
8+
* https://www.apache.org/licenses/LICENSE-2.0
9+
*
10+
* Unless required by applicable law or agreed to in writing, software
11+
* distributed under the License is distributed on an "AS IS" BASIS,
12+
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13+
* See the License for the specific language governing permissions and
14+
* limitations under the License.
15+
*/
16+
17+
package org.springframework.boot.jdbc;
18+
19+
import javax.sql.DataSource;
20+
21+
import org.junit.jupiter.api.Test;
22+
23+
import org.springframework.boot.sql.init.dependency.DatabaseInitializationDependencyConfigurer;
24+
import org.springframework.boot.sql.init.dependency.DependsOnDatabaseInitialization;
25+
import org.springframework.context.annotation.AnnotationConfigApplicationContext;
26+
import org.springframework.context.annotation.Bean;
27+
import org.springframework.context.annotation.Configuration;
28+
import org.springframework.context.annotation.Import;
29+
import org.springframework.core.io.ResourceLoader;
30+
31+
import static org.assertj.core.api.Assertions.assertThat;
32+
33+
/**
34+
* Tests for the configuration of dependencies on {@link AbstractDataSourceInitializer}
35+
* beans.
36+
*
37+
* @author Andy Wilkinson
38+
*/
39+
class AbstractDataSourceInitializerDependencyConfigurationTests {
40+
41+
@Test
42+
void beanThatDependsOnDatabaseInitializationDependsOnAbstractDataSourceInitializerBeans() {
43+
try (AnnotationConfigApplicationContext context = new AnnotationConfigApplicationContext(
44+
TestConfiguration.class)) {
45+
assertThat(context.getBeanFactory().getBeanDefinition("dependsOnDataSourceInitialization").getDependsOn())
46+
.contains("initializer");
47+
}
48+
}
49+
50+
@Import(DatabaseInitializationDependencyConfigurer.class)
51+
@Configuration(proxyBeanMethods = false)
52+
static class TestConfiguration {
53+
54+
@Bean
55+
DataSource dataSource() {
56+
return DataSourceBuilder.create().build();
57+
}
58+
59+
@Bean
60+
@DependsOnDatabaseInitialization
61+
String dependsOnDataSourceInitialization() {
62+
return "test";
63+
}
64+
65+
@Bean
66+
AbstractDataSourceInitializer initializer(DataSource dataSource, ResourceLoader resourceLoader) {
67+
return new AbstractDataSourceInitializer(dataSource, resourceLoader) {
68+
69+
@Override
70+
protected String getSchemaLocation() {
71+
return null;
72+
}
73+
74+
@Override
75+
protected DataSourceInitializationMode getMode() {
76+
return DataSourceInitializationMode.NEVER;
77+
}
78+
79+
};
80+
}
81+
82+
}
83+
84+
}

0 commit comments

Comments
 (0)