【问题标题】:Setting up in-memory H2 database without Spring Boot在没有 Spring Boot 的情况下设置内存 H2 数据库
【发布时间】:2018-11-18 11:14:18
【问题描述】:

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

【问题讨论】:

    标签: spring h2 in-memory-database


    【解决方案1】:

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

    【讨论】:

      【解决方案2】:

      通常我在我的@Config 类中使用它:

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

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

      希望对你有用。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2021-02-05
        • 2019-01-26
        • 2018-03-30
        • 2020-10-27
        • 2011-08-31
        • 2016-05-15
        • 2017-02-20
        • 2019-11-04
        相关资源
        最近更新 更多