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.