Java SpringH2嵌入式数据库
我想创建一个内存中的数据库,其中填充了用于快速测试的测试数据,因此我在配置文件中声明了这个bean,但我还想设置以下属性:Java SpringH2嵌入式数据库,java,spring,spring-boot,h2,embedded-database,Java,Spring,Spring Boot,H2,Embedded Database,我想创建一个内存中的数据库,其中填充了用于快速测试的测试数据,因此我在配置文件中声明了这个bean,但我还想设置以下属性: MODE=MySQL DB_CLOSE_ON_EXIT=FALSE 但我不知道在哪里做 @Bean public DataSource dataSource(){ return (new EmbeddedDatabaseBuilder()) .setType(EmbeddedDatabaseType.H2) //.H2
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();
}
另一种方法是使用属性连接数据源。通过这种方式,您可以设置JDBC URL,该URL可以包含其他属性。该模式可以通过H2上的SQL语句来完成,但我非常确定,
DB\u CLOSE\u DELAY
必须设置为URL的一部分,该URL不容易挂钩。您最好在application.properties/yml中设置它,并让spring自动配置它
jdbc:h2:mem:testdb;DB_CLOSE_DELAY=-1;MODE=MySQL将是spring.datasource.url
附加属性可用于模式和数据
@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();
}
您可以尝试使用EmbeddedDatabaseBuilder.setName()
注意:我自己并没有尝试过这个,但在答案上找到了一条线索立刻击败我:p解决了我的问题。谢谢:)
@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();
}