Browse Source

Order DataSourceScriptDatabaseInitializer last

Change the order of `DataSourceScriptDatabaseInitializerDetector` so
that it always runs last. This update allows script initialization to
be combined with a high-level migration tool such as Flyway.

Closes gh-26692
pull/26861/head
Phillip Webb 5 years ago
parent
commit
6ab2df5698
  1. 8
      spring-boot-project/spring-boot/src/main/java/org/springframework/boot/jdbc/init/DataSourceScriptDatabaseInitializerDetector.java
  2. 1
      spring-boot-tests/spring-boot-smoke-tests/spring-boot-smoke-test-flyway/src/main/resources/data.sql
  3. 2
      spring-boot-tests/spring-boot-smoke-tests/spring-boot-smoke-test-flyway/src/test/java/smoketest/flyway/SampleFlywayApplicationTests.java

8
spring-boot-project/spring-boot/src/main/java/org/springframework/boot/jdbc/init/DataSourceScriptDatabaseInitializerDetector.java

@ -21,6 +21,7 @@ import java.util.Set; @@ -21,6 +21,7 @@ import java.util.Set;
import org.springframework.boot.sql.init.dependency.AbstractBeansOfTypeDatabaseInitializerDetector;
import org.springframework.boot.sql.init.dependency.DatabaseInitializerDetector;
import org.springframework.core.Ordered;
/**
* A {@link DatabaseInitializerDetector} for {@link DataSourceScriptDatabaseInitializer}.
@ -29,9 +30,16 @@ import org.springframework.boot.sql.init.dependency.DatabaseInitializerDetector; @@ -29,9 +30,16 @@ import org.springframework.boot.sql.init.dependency.DatabaseInitializerDetector;
*/
class DataSourceScriptDatabaseInitializerDetector extends AbstractBeansOfTypeDatabaseInitializerDetector {
static final int PRECEDENCE = Ordered.LOWEST_PRECEDENCE - 100;
@Override
protected Set<Class<?>> getDatabaseInitializerBeanTypes() {
return Collections.singleton(DataSourceScriptDatabaseInitializer.class);
}
@Override
public int getOrder() {
return PRECEDENCE;
}
}

1
spring-boot-tests/spring-boot-smoke-tests/spring-boot-smoke-test-flyway/src/main/resources/data.sql

@ -0,0 +1 @@ @@ -0,0 +1 @@
insert into PERSON (first_name, last_name) values ('Phillip', 'Webb');

2
spring-boot-tests/spring-boot-smoke-tests/spring-boot-smoke-test-flyway/src/test/java/smoketest/flyway/SampleFlywayApplicationTests.java

@ -32,7 +32,7 @@ class SampleFlywayApplicationTests { @@ -32,7 +32,7 @@ class SampleFlywayApplicationTests {
@Test
void testDefaultSettings() {
assertThat(this.template.queryForObject("SELECT COUNT(*) from PERSON", Integer.class)).isEqualTo(1);
assertThat(this.template.queryForObject("SELECT COUNT(*) from PERSON", Integer.class)).isEqualTo(2);
}
}

Loading…
Cancel
Save