【发布时间】:2018-11-18 11:14:18
【问题描述】:
我正在从事 spring 5(非 Sprig Boot)项目。我需要使用内存 H2 数据库测试我的应用程序。我在 Maven 构建工具上使用 Spring 和 Java Config。有什么方法可以配置内存 H2 DB?
【问题讨论】:
标签: spring h2 in-memory-database
我正在从事 spring 5(非 Sprig Boot)项目。我需要使用内存 H2 数据库测试我的应用程序。我在 Maven 构建工具上使用 Spring 和 Java Config。有什么方法可以配置内存 H2 DB?
【问题讨论】:
标签: spring h2 in-memory-database
您可以使用EmbeddedDatabaseBuilder 添加DataSource bean,如下所示:
@Bean
public DataSource dataSource(
@Value("${datasource.dbname}") String dbname,
@Value("${datasource.script}") String script) {
return new EmbeddedDatabaseBuilder()
.setType(EmbeddedDatabaseType.H2)
.setName(dbname)
.addScript(script)
.build();
}
application.properties
datasource.dbname=users
datasource.script=classpath:resources/users.sql
也可以在应用配置类中注册h2-consoleservlet,如下:
@Configuration
public class WebAppConfig implements WebApplicationInitializer {
@Override
public void onStartup(ServletContext servletContext) {
. . .
servletContext
.addServlet("H2Console", WebServlet.class)
.addMapping("/console/*");
. . .
}
}
然后你可以打开http://localhost:8080/console并连接到jdbc:h2:mem:users数据库如下:
另见How to enable h2-console in spring-webmvc without spring-boot?
【讨论】:
通常我在我的@Config 类中使用它:
@Bean
public DataSource h2TestDataSource(){
return new EmbeddedDatabaseBuilder().setType(EmbeddedDatabaseType.H2).build();
}
所以我在我的 spring 项目中使用 Spring Embedded DB(我不使用 spring boot)
希望对你有用。
【讨论】: