diff --git a/module/spring-boot-batch-jdbc/src/main/java/org/springframework/boot/batch/jdbc/autoconfigure/BatchDataSourceScriptDatabaseInitializer.java b/module/spring-boot-batch-jdbc/src/main/java/org/springframework/boot/batch/jdbc/autoconfigure/BatchDataSourceScriptDatabaseInitializer.java index 1311461396b..bda939f3af3 100644 --- a/module/spring-boot-batch-jdbc/src/main/java/org/springframework/boot/batch/jdbc/autoconfigure/BatchDataSourceScriptDatabaseInitializer.java +++ b/module/spring-boot-batch-jdbc/src/main/java/org/springframework/boot/batch/jdbc/autoconfigure/BatchDataSourceScriptDatabaseInitializer.java @@ -20,6 +20,7 @@ import javax.sql.DataSource; import org.springframework.boot.jdbc.init.DataSourceScriptDatabaseInitializer; import org.springframework.boot.jdbc.init.PropertiesBasedDataSourceScriptDatabaseInitializer; +import org.springframework.boot.sql.init.DatabaseInitializationSettings; /** * {@link DataSourceScriptDatabaseInitializer} for the Spring Batch database. May be @@ -44,4 +45,9 @@ public class BatchDataSourceScriptDatabaseInitializer super(dataSource, properties); } + @Override + protected DatabaseInitializationSettings getSettings() { + return super.getSettings(); + } + } diff --git a/module/spring-boot-batch-jdbc/src/test/java/org/springframework/boot/batch/jdbc/autoconfigure/BatchDataSourceScriptDatabaseInitializerTests.java b/module/spring-boot-batch-jdbc/src/test/java/org/springframework/boot/batch/jdbc/autoconfigure/BatchDataSourceScriptDatabaseInitializerTests.java index 7485bb53d1a..f295ed64be8 100644 --- a/module/spring-boot-batch-jdbc/src/test/java/org/springframework/boot/batch/jdbc/autoconfigure/BatchDataSourceScriptDatabaseInitializerTests.java +++ b/module/spring-boot-batch-jdbc/src/test/java/org/springframework/boot/batch/jdbc/autoconfigure/BatchDataSourceScriptDatabaseInitializerTests.java @@ -54,8 +54,8 @@ class BatchDataSourceScriptDatabaseInitializerTests { DataSource dataSource = mock(DataSource.class); BatchJdbcProperties properties = new BatchJdbcProperties(); properties.setPlatform("test"); - DatabaseInitializationSettings settings = BatchDataSourceScriptDatabaseInitializer.getSettings(dataSource, - properties); + DatabaseInitializationSettings settings = new BatchDataSourceScriptDatabaseInitializer(dataSource, properties) + .getSettings(); assertThat(settings.getSchemaLocations()) .containsOnly("classpath:org/springframework/batch/core/schema-test.sql"); then(dataSource).shouldHaveNoInteractions(); @@ -74,8 +74,8 @@ class BatchDataSourceScriptDatabaseInitializerTests { given(connection.getMetaData()).willReturn(metadata); String productName = (String) ReflectionTestUtils.getField(driver, "productName"); given(metadata.getDatabaseProductName()).willReturn(productName); - DatabaseInitializationSettings settings = BatchDataSourceScriptDatabaseInitializer.getSettings(dataSource, - properties); + DatabaseInitializationSettings settings = new BatchDataSourceScriptDatabaseInitializer(dataSource, properties) + .getSettings(); List schemaLocations = settings.getSchemaLocations(); assertThat(schemaLocations).isNotEmpty() .allSatisfy((location) -> assertThat(resourceLoader.getResource(location).exists()).isTrue()); diff --git a/module/spring-boot-integration/src/main/java/org/springframework/boot/integration/autoconfigure/IntegrationDataSourceScriptDatabaseInitializer.java b/module/spring-boot-integration/src/main/java/org/springframework/boot/integration/autoconfigure/IntegrationDataSourceScriptDatabaseInitializer.java index e91ffb16b41..85d3cc5e321 100644 --- a/module/spring-boot-integration/src/main/java/org/springframework/boot/integration/autoconfigure/IntegrationDataSourceScriptDatabaseInitializer.java +++ b/module/spring-boot-integration/src/main/java/org/springframework/boot/integration/autoconfigure/IntegrationDataSourceScriptDatabaseInitializer.java @@ -23,6 +23,7 @@ import javax.sql.DataSource; import org.springframework.boot.jdbc.DatabaseDriver; import org.springframework.boot.jdbc.init.DataSourceScriptDatabaseInitializer; import org.springframework.boot.jdbc.init.PropertiesBasedDataSourceScriptDatabaseInitializer; +import org.springframework.boot.sql.init.DatabaseInitializationSettings; /** * {@link DataSourceScriptDatabaseInitializer} for the Spring Integration database. May be @@ -46,4 +47,9 @@ public class IntegrationDataSourceScriptDatabaseInitializer super(dataSource, properties, Map.of(DatabaseDriver.MARIADB, "mysql")); } + @Override + protected DatabaseInitializationSettings getSettings() { + return super.getSettings(); + } + } diff --git a/module/spring-boot-integration/src/test/java/org/springframework/boot/integration/autoconfigure/IntegrationDataSourceScriptDatabaseInitializerTests.java b/module/spring-boot-integration/src/test/java/org/springframework/boot/integration/autoconfigure/IntegrationDataSourceScriptDatabaseInitializerTests.java index 358e3c8ac2b..137d258b544 100644 --- a/module/spring-boot-integration/src/test/java/org/springframework/boot/integration/autoconfigure/IntegrationDataSourceScriptDatabaseInitializerTests.java +++ b/module/spring-boot-integration/src/test/java/org/springframework/boot/integration/autoconfigure/IntegrationDataSourceScriptDatabaseInitializerTests.java @@ -38,8 +38,9 @@ class IntegrationDataSourceScriptDatabaseInitializerTests { DataSource dataSource = mock(DataSource.class); IntegrationJdbcProperties properties = new IntegrationJdbcProperties(); properties.setPlatform("test"); - DatabaseInitializationSettings settings = IntegrationDataSourceScriptDatabaseInitializer.getSettings(dataSource, - properties); + DatabaseInitializationSettings settings = new IntegrationDataSourceScriptDatabaseInitializer(dataSource, + properties) + .getSettings(); assertThat(settings.getSchemaLocations()) .containsOnly("classpath:org/springframework/integration/jdbc/schema-test.sql"); then(dataSource).shouldHaveNoInteractions(); diff --git a/module/spring-boot-jdbc/src/main/java/org/springframework/boot/jdbc/init/PropertiesBasedDataSourceScriptDatabaseInitializer.java b/module/spring-boot-jdbc/src/main/java/org/springframework/boot/jdbc/init/PropertiesBasedDataSourceScriptDatabaseInitializer.java index 9b0fc4b9a33..a5a5871643d 100644 --- a/module/spring-boot-jdbc/src/main/java/org/springframework/boot/jdbc/init/PropertiesBasedDataSourceScriptDatabaseInitializer.java +++ b/module/spring-boot-jdbc/src/main/java/org/springframework/boot/jdbc/init/PropertiesBasedDataSourceScriptDatabaseInitializer.java @@ -59,20 +59,6 @@ public class PropertiesBasedDataSourceScriptDatabaseInitializer the {@link DatabaseInitializationProperties} type being used - * @return a new {@link DatabaseInitializationSettings} instance - */ - public static DatabaseInitializationSettings getSettings( - DataSource dataSource, T properties) { - return getSettings(dataSource, properties, Collections.emptyMap()); - } - /** * Adapts {@link DatabaseInitializationProperties configuration properties} to * {@link DatabaseInitializationSettings} replacing any {@literal @@platform@@} @@ -83,7 +69,7 @@ public class PropertiesBasedDataSourceScriptDatabaseInitializer the {@link DatabaseInitializationProperties} type being used * @return a new {@link DatabaseInitializationSettings} instance */ - public static DatabaseInitializationSettings getSettings( + private static DatabaseInitializationSettings getSettings( DataSource dataSource, T properties, Map driverMappings) { DatabaseInitializationSettings settings = new DatabaseInitializationSettings(); settings.setSchemaLocations(resolveSchemaLocations(dataSource, properties, driverMappings)); diff --git a/module/spring-boot-quartz/src/main/java/org/springframework/boot/quartz/autoconfigure/QuartzDataSourceScriptDatabaseInitializer.java b/module/spring-boot-quartz/src/main/java/org/springframework/boot/quartz/autoconfigure/QuartzDataSourceScriptDatabaseInitializer.java index d1711e1ee55..fc71415ef3c 100644 --- a/module/spring-boot-quartz/src/main/java/org/springframework/boot/quartz/autoconfigure/QuartzDataSourceScriptDatabaseInitializer.java +++ b/module/spring-boot-quartz/src/main/java/org/springframework/boot/quartz/autoconfigure/QuartzDataSourceScriptDatabaseInitializer.java @@ -26,6 +26,7 @@ import org.jspecify.annotations.Nullable; import org.springframework.boot.jdbc.DatabaseDriver; import org.springframework.boot.jdbc.init.DataSourceScriptDatabaseInitializer; import org.springframework.boot.jdbc.init.PropertiesBasedDataSourceScriptDatabaseInitializer; +import org.springframework.boot.sql.init.DatabaseInitializationSettings; import org.springframework.jdbc.datasource.init.ResourceDatabasePopulator; import org.springframework.util.ObjectUtils; @@ -57,6 +58,11 @@ public class QuartzDataSourceScriptDatabaseInitializer this.commentPrefixes = properties.getCommentPrefix(); } + @Override + protected DatabaseInitializationSettings getSettings() { + return super.getSettings(); + } + @Override protected void customize(ResourceDatabasePopulator populator) { if (!ObjectUtils.isEmpty(this.commentPrefixes)) { diff --git a/module/spring-boot-quartz/src/test/java/org/springframework/boot/quartz/autoconfigure/QuartzDataSourceScriptDatabaseInitializerTests.java b/module/spring-boot-quartz/src/test/java/org/springframework/boot/quartz/autoconfigure/QuartzDataSourceScriptDatabaseInitializerTests.java index 38831e6033c..8d9bdf1c9f7 100644 --- a/module/spring-boot-quartz/src/test/java/org/springframework/boot/quartz/autoconfigure/QuartzDataSourceScriptDatabaseInitializerTests.java +++ b/module/spring-boot-quartz/src/test/java/org/springframework/boot/quartz/autoconfigure/QuartzDataSourceScriptDatabaseInitializerTests.java @@ -41,8 +41,8 @@ class QuartzDataSourceScriptDatabaseInitializerTests { DataSource dataSource = mock(DataSource.class); QuartzJdbcProperties properties = new QuartzJdbcProperties(); properties.setPlatform("test"); - DatabaseInitializationSettings settings = QuartzDataSourceScriptDatabaseInitializer.getSettings(dataSource, - properties); + DatabaseInitializationSettings settings = new QuartzDataSourceScriptDatabaseInitializer(dataSource, properties) + .getSettings(); assertThat(settings.getSchemaLocations()) .containsOnly("classpath:org/quartz/impl/jdbcjobstore/tables_test.sql"); then(dataSource).shouldHaveNoInteractions(); diff --git a/module/spring-boot-session-jdbc/src/main/java/org/springframework/boot/session/jdbc/autoconfigure/JdbcSessionDataSourceScriptDatabaseInitializer.java b/module/spring-boot-session-jdbc/src/main/java/org/springframework/boot/session/jdbc/autoconfigure/JdbcSessionDataSourceScriptDatabaseInitializer.java index 7b08627ef6c..c4938bcee59 100644 --- a/module/spring-boot-session-jdbc/src/main/java/org/springframework/boot/session/jdbc/autoconfigure/JdbcSessionDataSourceScriptDatabaseInitializer.java +++ b/module/spring-boot-session-jdbc/src/main/java/org/springframework/boot/session/jdbc/autoconfigure/JdbcSessionDataSourceScriptDatabaseInitializer.java @@ -23,6 +23,7 @@ import javax.sql.DataSource; import org.springframework.boot.jdbc.DatabaseDriver; import org.springframework.boot.jdbc.init.DataSourceScriptDatabaseInitializer; import org.springframework.boot.jdbc.init.PropertiesBasedDataSourceScriptDatabaseInitializer; +import org.springframework.boot.sql.init.DatabaseInitializationSettings; /** * {@link DataSourceScriptDatabaseInitializer} for the Spring Session JDBC database. May @@ -48,4 +49,9 @@ public class JdbcSessionDataSourceScriptDatabaseInitializer super(dataSource, properties, Map.of(DatabaseDriver.MARIADB, "mysql")); } + @Override + protected DatabaseInitializationSettings getSettings() { + return super.getSettings(); + } + } diff --git a/module/spring-boot-session-jdbc/src/test/java/org/springframework/boot/session/jdbc/autoconfigure/JdbcSessionDataSourceScriptDatabaseInitializerTests.java b/module/spring-boot-session-jdbc/src/test/java/org/springframework/boot/session/jdbc/autoconfigure/JdbcSessionDataSourceScriptDatabaseInitializerTests.java index 4b01bb3d9d1..be8c358f347 100644 --- a/module/spring-boot-session-jdbc/src/test/java/org/springframework/boot/session/jdbc/autoconfigure/JdbcSessionDataSourceScriptDatabaseInitializerTests.java +++ b/module/spring-boot-session-jdbc/src/test/java/org/springframework/boot/session/jdbc/autoconfigure/JdbcSessionDataSourceScriptDatabaseInitializerTests.java @@ -38,8 +38,9 @@ class JdbcSessionDataSourceScriptDatabaseInitializerTests { DataSource dataSource = mock(DataSource.class); JdbcSessionProperties properties = new JdbcSessionProperties(); properties.setPlatform("test"); - DatabaseInitializationSettings settings = JdbcSessionDataSourceScriptDatabaseInitializer.getSettings(dataSource, - properties); + DatabaseInitializationSettings settings = new JdbcSessionDataSourceScriptDatabaseInitializer(dataSource, + properties) + .getSettings(); assertThat(settings.getSchemaLocations()) .containsOnly("classpath:org/springframework/session/jdbc/schema-test.sql"); then(dataSource).shouldHaveNoInteractions(); diff --git a/module/spring-boot-sql/src/main/java/org/springframework/boot/sql/init/AbstractScriptDatabaseInitializer.java b/module/spring-boot-sql/src/main/java/org/springframework/boot/sql/init/AbstractScriptDatabaseInitializer.java index 80f2aa73e53..dd712ce5a23 100644 --- a/module/spring-boot-sql/src/main/java/org/springframework/boot/sql/init/AbstractScriptDatabaseInitializer.java +++ b/module/spring-boot-sql/src/main/java/org/springframework/boot/sql/init/AbstractScriptDatabaseInitializer.java @@ -59,6 +59,15 @@ public abstract class AbstractScriptDatabaseInitializer implements ResourceLoade this.settings = settings; } + /** + * Return the {@link DatabaseInitializationSettings} being used by the initializer. + * @return the settings being used + * @since 4.0.0 + */ + protected DatabaseInitializationSettings getSettings() { + return this.settings; + } + @Override public void setResourceLoader(ResourceLoader resourceLoader) { this.resourceLoader = resourceLoader;