В настоящее время я работаю над приложением Spring Boot (1.5.10.RELEASE
), которое использует 2 встроенные базы данных.Эти две базы данных определены одинаково, но одна определяется в самом приложении, а другая определяется в пользовательском классе автоконфигурации, который находится в импортированном JAR;только инициализированная схема получает только тот, который помечен как @Primary
(тот, что в приложении).
Это текущее определение для обоих источников данных:
Первичный в приложении:
@Configuration
public class DataSourceConfiguration {
@Bean
@ConfigurationProperties(prefix = "first.datasource")
@Primary
public DataSourceProperties firstProperties() {
return new DataSourceProperties();
}
@Bean
@Primary
public DataSource firstDataSource() {
return firstProperties().initializeDataSourceBuilder().build();
}
@Bean
@Primary
public JdbcTemplate firstTemplate() {
return new JdbcTemplate(firstDataSource());
}
}
В автоконфигурации:
@Configuration
@ConditionalOnProperty(name = "second.datasource.url")
public class SecondDataSourceAutoconfiguration {
@Bean
@ConfigurationProperties(prefix = "second.datasource")
public DataSourceProperties secondProperties() {
return new DataSourceProperties();
}
@Bean
public DataSource secondDataSource() {
return secondProperties().initializeDataSourceBuilder().build();
}
@Bean
public JdbcTemplate secondJdbcTemplate(@Qualifier("secondDataSource") DataSource datasource) {
return new JdbcTemplate(datasource);
}
}
И мой application.yml заполняет свойства:
first:
datasource:
url: jdbc:h2:firstdb;DB_CLOSE_ON_EXIT=FALSE
second:
datasource:
url: jdbc:h2:seconddb
platform: h2
Моя папка ресурсов содержит как schema.sql
, который выполняется наfirstdb
и schema-h2.sql
, которые должны выполняться на seconddb
, но это не так.Я попытался поиграться со свойствами datasource.schema
и datasource.initialize
, переключив имена сценариев и свойство платформы на первый источник данных (в этом случае schema-h2.sql
выполняется на firstdb
, но ничего на seconddb
) и изменение поставщика встроенной базы данных на HSQLDB;но все равно не могу инициализировать схему для неосновной БД в памяти.