To facilitate configuration of multiple DataSources, the missing piece of the convenience puzzle is SettingsCreator.createFrom.

I suggest adding a method to the properties, SqlInitializationProperties.toDatabaseInitializationSettings(), to match e.g. Cachecontrol.toHttpCacheControl().

The required config to initialise a second DataSource would then be simply:

@Bean
@ConfigurationProperties(prefix = "second.sql.init")
public SqlInitializationProperties secondInitializationProperties() {
    return new SqlInitializationProperties();
}

@Bean
public DataSourceScriptDatabaseInitializer secondDataSourceInitializer() {
    DatabaseInitializationSettings settings = secondInitializationProperties().toDatabaseInitializationSettings();
    return new DataSourceScriptDatabaseInitializer(secondDataSource(), settings);
}

Comment From: radoslawdabrowski

Is this issue already refined? Can I work on this?

Comment From: snicoll

Closing in favor of PR #27972

Comment From: wilkinsona

Unfortunately we missed that this is no longer necessary. The changes made in https://github.com/spring-projects/spring-boot/issues/27206 have superseded the need for this.

Comment From: OrangeDog

@wilkinsona sorry, I missed this comment before. How exactly is this no longer necessary? I still do not see any way to make a DataSourceScriptDatabaseInitializer from a SqlInitializationProperties, other than via this still package-private createFrom method.

Comment From: wilkinsona

There's SqlDataSourceScriptDatabaseInitializer.SqlDataSourceScriptDatabaseInitializer(DataSource, SqlInitializationProperties) and SqlDataSourceScriptDatabaseInitializer.getSettings(SqlInitializationProperties) that you can use.