设置Spring Boot嵌入式数据库的名称

时间:2015-12-15 16:10:55

标签: java spring spring-boot hsqldb

如何设置在测试中运行的Spring Boot应用程序中启动的嵌入式数据库的名称?

在他们合作时,我作为测试的一部分启动了同一个Spring Boot应用程序的两个实例。它们都正确启动HSQL数据库,但默认为testdb的数据库名称,尽管为spring.datasource.name提供了不同的值。

如何提供不同的数据库名称或其他一些隔离这两个数据库的方法?什么是最轻的触摸'?如果我可以避免它,我宁愿使用属性来控制它,而不是将bean添加到我的测试配置中 - 由于这种粗粒度的协作测试,测试配置类不应该混乱。

2 个答案:

答案 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使用枚举作为默认值,如果尝试从属性中获取名称,则意味着更大的重写。