Commit 6ab2df56 authored by Phillip Webb's avatar Phillip Webb

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
parent dafd5112
...@@ -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.AbstractBeansOfTypeDatabaseInitializerDetector;
import org.springframework.boot.sql.init.dependency.DatabaseInitializerDetector; import org.springframework.boot.sql.init.dependency.DatabaseInitializerDetector;
import org.springframework.core.Ordered;
/** /**
* A {@link DatabaseInitializerDetector} for {@link DataSourceScriptDatabaseInitializer}. * 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 { class DataSourceScriptDatabaseInitializerDetector extends AbstractBeansOfTypeDatabaseInitializerDetector {
static final int PRECEDENCE = Ordered.LOWEST_PRECEDENCE - 100;
@Override @Override
protected Set<Class<?>> getDatabaseInitializerBeanTypes() { protected Set<Class<?>> getDatabaseInitializerBeanTypes() {
return Collections.singleton(DataSourceScriptDatabaseInitializer.class); return Collections.singleton(DataSourceScriptDatabaseInitializer.class);
} }
@Override
public int getOrder() {
return PRECEDENCE;
}
} }
insert into PERSON (first_name, last_name) values ('Phillip', 'Webb');
...@@ -32,7 +32,7 @@ class SampleFlywayApplicationTests { ...@@ -32,7 +32,7 @@ class SampleFlywayApplicationTests {
@Test @Test
void testDefaultSettings() { 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);
} }
} }
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment