如何设置在测试中运行的Spring Boot应用程序中启动的嵌入式数据库的名称?
在他们合作时,我作为测试的一部分启动了同一个Spring Boot应用程序的两个实例。它们都正确启动HSQL数据库,但默认为testdb
的数据库名称,尽管为spring.datasource.name
提供了不同的值。
如何提供不同的数据库名称或其他一些隔离这两个数据库的方法?什么是最轻的触摸'?如果我可以避免它,我宁愿使用属性来控制它,而不是将bean添加到我的测试配置中 - 由于这种粗粒度的协作测试,测试配置类不应该混乱。
答案 0 :(得分:0)
您可以这样尝试:
spring.datasource1.name=testdb
spring.datasource2.name=otherdb
然后在ApplicationConfig中声明数据源,就像这样
@Bean
@ConfigurationProperties(prefix="spring.datasource1")
public DataSource dataSource1() {
...
}
@Bean
@ConfigurationProperties(prefix="spring.datasource2")
public DataSource dataSource2() {
...
}
有关详细信息,请参阅官方文档:https://docs.spring.io/spring-boot/docs/current/reference/html/howto-data-access.html#howto-configure-a-datasource
答案 1 :(得分:0)
Gah - 设置spring.datasource.name
会更改数据源的名称,但不会更改数据库的名称。
设置spring.datasource.url=jdbc:hsql:mem:mydbname
完全符合我的需要。我必须对嵌入式数据库实现进行硬编码,但Spring Boot使用枚举作为默认值,如果尝试从属性中获取名称,则意味着更大的重写。