在没有 Spring Boot 的情况下设置内存 H2 数据库

问题描述 投票:0回答:2

我正在开发一个 spring 5(不是 Sprig Boot)项目。我需要使用内存 H2 数据库测试我的应用程序。我在 Maven 构建工具上使用 Spring 和 Java Config。有什么方法可以配置内存中的 H2 DB 吗?

spring h2 in-memory-database
2个回答
4
投票

您可以使用

DataSource
 添加 
EmbeddedDatabaseBuilder
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();
}

应用程序.属性

datasource.dbname=users
datasource.script=classpath:resources/users.sql

您还可以在应用程序配置类中注册

h2-console
servlet,如下所示:

@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
数据库,如下所示:


另请参阅如何在没有 spring-boot 的情况下在 spring-webmvc 中启用 h2-console?


2
投票

通常我在我的

@Config
类中使用这个:

@Bean
public DataSource h2TestDataSource(){
   return new EmbeddedDatabaseBuilder().setType(EmbeddedDatabaseType.H2).build();
}

所以我在我的spring项目中使用Spring Embedded DB(我不使用spring boot)

希望有用。

© www.soinside.com 2019 - 2024. All rights reserved.