2017-04-24 93 views
0

我想創建一個填充了快速檢測試驗數據的內存數據庫,所以我在配置文件中聲明這個bean,但我也想這樣設置這個屬性:春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(); 
} 

回答

4

試試這個

@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(); 
} 
+0

打我的微小線索:P – qtips

0

另一種方法是使用屬性連線DataSources。這樣,您可以設置可包含其他屬性的JDBC URL。

1

該模式可以通過H2上的SQL語句來完成,但我很肯定DB_CLOSE_DELAY必須設置爲URL的一部分,這是不容易掛鉤的。你最好只是在application.properties/yml設置此,讓春天的自動配置它

jdbc:h2:mem:testdb;DB_CLOSE_DELAY=-1;MODE=MySQL將是spring.datasource.url附加屬性可用於schemadata

1

您可以嘗試使用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答案