Spring with Gradle - H2 控制台未显示在 localhost:8080/h2-console
Posted
技术标签:
【中文标题】Spring with Gradle - H2 控制台未显示在 localhost:8080/h2-console【英文标题】:Spring with Gradle - H2 console does not show in localhost:8080/h2-console 【发布时间】:2019-03-20 02:29:13 【问题描述】:我下载了 gradle 并创建了指向现有 gradle 文件的新项目。现在我想连接到 H2.database。这是我的 build.gradle 文件:
plugins
id 'java'
id 'org.springframework.boot' version '2.0.5.RELEASE'
id "io.spring.dependency-management" version "1.0.6.RELEASE"
apply plugin: 'application'
apply plugin: 'idea'
group 'shop.hello.manualgradle'
version '1.0-SNAPSHOT'
sourceCompatibility = 1.8
mainClassName = 'hello.HelloWorld'
repositories
mavenCentral()
jar
baseName = 'gs-gradle'
version = '0.1.0'
dependencies
testCompile group: 'junit', name: 'junit', version: '4.12'
compile group: 'joda-time', name: 'joda-time', version: '2.2'
compile 'org.springframework.boot:spring-boot-starter-web'
compile 'org.springframework.boot:spring-boot-starter-data-jpa'
compile 'com.h2database:h2'
compile 'com.fasterxml.jackson.datatype:jackson-datatype-jsr310'
这是我在 src/main/resources 和 src/test/resources 中制作的 application.properties 文件
spring.datasource.name=ecommercedb
spring.jpa.show-sql=true
#H2 settings
spring.h2.console.enabled=true
spring.h2.console.path=/h2-console
我使用 gradle idea 运行项目以更新依赖项,然后 gradlew build 和 gradlew run。没有错误,但是当我转到 localhost:8080/h2-console 时,我得到的只是连接错误。我也尝试过使用 gradle build。为什么会这样?我也使用 IntelIJ,并且我有红色的 build 和 gradle 文件夹,为什么?我正在使用本指南:https://www.baeldung.com/spring-angular-ecommerce,但我使用自己的 gradle 而不是 Initializr,并且我在外部库中有 Gradle:com.h2.database 文件,所以我认为它应该可以工作!请帮忙
【问题讨论】:
当您执行gradlew run
时:您是否有这样的日志表明SpringBoot 应用程序已真正启动?你能分享一些日志跟踪吗?
【参考方案1】:
您的 Gradle 构建看起来不错,并且您的 application.properties
配置文件也正常。要使 H2 控制台可用,唯一要做的就是设置属性 spring.h2.console.enabled=true
,就像您所做的那样:所以它应该可以工作......您不需要配置 datasource.url
或凭据,Springboot 将使用默认 url jdbc:h2:~/test
.
您应该尝试配置 H2 db 日志记录级别并检查在启动应用程序或尝试访问 H2 控制台时是否可以看到错误/警告:在您的 application.properties
文件中添加以下属性
spring.datasource.url=jdbc:h2:~/test;TRACE_LEVEL_FILE=4
然后,您应该在启动应用程序时看到如下痕迹:
2018-10-15 19:56:25.090 DEBUG 7576 --- [ main] h2database : test:jdbc[3]
/**/conn0.clearWarnings();
当您尝试访问 H2 控制台时,您应该会看到类似这样的痕迹:
2018-10-15 19:57:21.179 DEBUG 7576 --- [nio-8080-exec-7] h2database : test:jdbc[13] Table : potential plan item cost 10 000 index meta
【讨论】:
M.Ricciuti 这很奇怪,因为我没有看到任何痕迹。我所看到的只是构建成功,我进行了 gradle 构建,然后 gradle 运行,它通过了打印 Hello World,但当我转到 localhost:8080/h2-console 或 /console 时出现错误连接 - Intelij 终端中仍然没有跟踪.我还尝试了 Khwaja Sanjari,并粘贴了他发布的线程中的代码,我什至使用 ServletRegistrationBean 创建了新的应用程序类 - 仍然:没有错误,本地主机上没有控制台,什么都没有【参考方案2】:我遇到了同样的问题,发现我的 application.properties 文件中 spring.h2.console.path=/h2-console
后面有空格。这导致它路由不正确。这是一个很老的问题,但我想我会添加为我解决问题的方法。
【讨论】:
以上是关于Spring with Gradle - H2 控制台未显示在 localhost:8080/h2-console的主要内容,如果未能解决你的问题,请参考以下文章
Spring Server with H2 Database SchemaUpdate HHH000299
[Spring boot] Integrating with h2 database
Spring 学习 171005 Building Java Projects with Gradle
Spring Boot with H2 每次 web 应用启动时都会运行 data.sql,这正常吗?
flyway with spring boot and gradle--org.flywaydb.core.Flyway: 方法 <init>()V not found