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

2022-08-31 08:45:02

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

http://localhost:8080/console/

我看到这样的建议:查看Spring启动的嵌入式H2数据库的内容

但是我不知道在spring-boot中将建议的XML放在哪里,即使我这样做了,我也不希望在配置外部数据库时不再可用,所以我更有可能需要使用某种条件代码来处理这个问题(或者也许只是允许spring在最理想的情况下自动处理它,我只在激活maven配置文件时包含H2)。h2console

有没有人有一些示例代码来展示如何让H2控制台在引导中工作(以及找出spring使用的jdbc连接字符串的方法)?


答案 1

这就是我如何让H2控制台在H2的弹簧启动中工作。我不确定这是否正确,但由于没有其他人提供解决方案,那么我将建议这是最好的方法。

在我的情况下,我为数据库选择了一个特定的名称,以便在启动H2控制台时输入一些东西(在本例中为“AZ”)。我认为所有这些都是必需的,尽管似乎省略spring.jpa.database-platform并没有什么坏处。

在应用程序.属性中:

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

在应用程序中.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


答案 2

从Spring Boot开始,H2控制台可以自动配置。1.3.0.M3

先决条件是:

  • 您正在开发 Web 应用程序
  • 启用了弹簧启动开发工具
  • H2 位于类路径上

即使您不使用 Spring Boot 开发工具,您仍可以通过设置为spring.h2.console.enabledtrue

有关所有详细信息,请查看文档的一部分。

请注意,以这种方式进行配置时,可通过以下方式访问控制台:http://localhost:8080/h2-console/


推荐