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

标签 java spring spring-boot h2 spring-jdbc

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

http://localhost:8080/console/

我看到这样的建议: View content of embedded H2 database started by Spring

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

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

最佳答案

这就是我如何让 H2 控制台在带有 H2 的 spring-boot 中工作。我不确定这是否正确,但由于没有其他人提供解决方案,所以我建议这是最好的方法。

在我的例子中,我为数据库选择了一个特定的名称,以便在启动 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

关于java - Spring Boot 默认 H2 jdbc 连接(和 H2 控制台),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24655684/

相关文章:

java - 增加并发hashmap分段

java - 编码问题: "São Paulo" becomes "S%C3%A3o%20Paulo" then "São Paulo"

java - 如何从标题创建路径变量?

json - RestTemplate和访问json

java - 使用 ContextRefreshedEvent 参数为私有(private)方法创建 JUnit

java - 在 Spring Boot 中使用 RestTemplate 时,Long 值始终为 null

java - 为什么在检查数组字符串是否为空时会出现空指针异常?

java 查找 xml 属性的值

java - "()V"在类签名中是什么意思?

java - ContextStartedEvent 未在自定义监听器中触发