我想创建一个内存数据库,其中填充了测试数据以进行快速测试,因此我在配置文件中声明了这个bean,但我也想设置这个属性:
MODE=MySQL
DB_CLOSE_ON_EXIT=FALSE
但我不知道该怎么做
@Bean
public DataSource dataSource(){
return
(new EmbeddedDatabaseBuilder())
.setType(EmbeddedDatabaseType.H2) //.H2
.addScript("classpath:db/H2.schema.sql")
.addScript("classpath:db/H2.data.sql")
.build();
}
答案 0 :(得分:8)
试试这个
@Bean
public DataSource dataSource(){
return
new EmbeddedDatabaseBuilder()
.setType(EmbeddedDatabaseType.H2)
.setName("testDB;DB_CLOSE_ON_EXIT=FALSE;MODE=MySQL")
.addScript("classpath:db/H2.schema.sql")
.addScript("classpath:db/H2.data.sql")
.build();
}
答案 1 :(得分:2)
您可以尝试使用EmbeddedDatabaseBuilder.setName()
:
@Bean
public DataSource dataSource(){
return
new EmbeddedDatabaseBuilder()
.setName("testdb;MODE=MySQL;DB_CLOSE_ON_EXIT=false")
.setType(EmbeddedDatabaseType.H2) //.H2
.addScript("classpath:db/H2.schema.sql")
.addScript("classpath:db/H2.data.sql")
.build();
}
注意:我自己没有尝试过,但在this回答
上找到了线索答案 2 :(得分:1)
另一种方法是使用属性连接DataSources。这样,您可以设置可包含其他属性的JDBC URL。
答案 3 :(得分:1)
模式可以通过H2上的SQL语句完成,但我很确定DB_CLOSE_DELAY
必须设置为URL的一部分,没有简单的钩子。你最好只在application.properties/yml中设置它,让spring自动配置它
jdbc:h2:mem:testdb;DB_CLOSE_DELAY=-1;MODE=MySQL
可以spring.datasource.url
和schema
data
个附加属性