我目前正在使用一个使用2个嵌入式数据库的Spring Boot(1.5.10.RELEASE
)应用程序。这两个数据库是相同定义的,但是在应用程序本身上定义了一个数据库,并且在导入的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
上执行,但response.json().fruites
)上没有任何内容,并将嵌入式数据库提供程序更改为HSQLDB;但无论如何都无法初始化非主要内存数据库的模式。