一尘不染

Spring Boot默认的H2 jdbc连接(和H2控制台)

spring-boot

当我未在application.properties中指定任何内容并以mvn spring:run开头时,我只是想查看spring-
boot创建的嵌入式H2数据库的H2数据库内容。我可以看到hibernate的JPA正在创建表,但是如果我尝试在数据库下面的URL下访问h2控制台,则该表没有表。

http://localhost:8080/console/

但是我不知道在Spring Boot时将建议的XML放在哪里,即使我这样做了,我也不希望在配置外部数据库时h2console可用,因此我更有可能需要处理此问题。使用某种条件代码(或者在最理想的情况下(仅当激活Maven配置文件时我仅包含H2)允许弹簧自动处理它)。

是否有人有示例代码显示如何使H2控制台在启动时工作(以及找出spring使用的jdbc连接字符串的方法)?


阅读 1430

收藏
2020-05-30

共1个答案

一尘不染

这就是我让H2控制台在H2的spring启动中工作的方式 。我不确定这是否正确,但是由于没有其他人提供解决方案,因此我建议这是最好的方法。

就我而言,我为数据库选择了一个特定的名称,以便在启动H2控制台时可以输入一些内容(在本例中为“
AZ”)。我认为所有这些都是必需的,尽管忽略spring.jpa.database-platform似乎没有任何伤害。

在application.properties中:

spring.datasource.url=jdbc:h2:mem:AZ;DB_CLOSE_DELAY=-1;DB_CLOSE_ON_EXIT=FALSE
spring.datasource.driverClassName=org.h2.Driver
spring.datasource.username=sa
spring.datasource.password=
spring.jpa.database-platform=org.hibernate.dialect.H2Dialect

在Application.java(或某些配置)中:

@Bean
public ServletRegistrationBean h2servletRegistration() {
    ServletRegistrationBean registration = new ServletRegistrationBean(new WebServlet());
    registration.addUrlMappings("/console/*");
    return registration;
}

然后,您可以通过{server} / console /访问H2控制台。输入此作为JDBC URL:jdbc:h2:mem:AZ

2020-05-30