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

Setting up in-memory H2 database without Spring Boot

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

通常我在 @Config class:

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

所以我在我的 spring 项目中使用 Spring 嵌入式数据库(我不使用 spring 启动)

希望有用。

您可以使用 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

您也可以在应用程序配置class中注册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数据库,如下所示:


另见 How to enable h2-console in spring-webmvc without spring-boot?