弹簧启动默认H2 jdbc连接(和H2控制台)

我只是试图看到一个embedded式H2数据库的H2数据库内容,当我没有在我的application.properties中指定任何东西时,spring-boot会创build一个embedded式H2数据库,并以mvn spring:run开头。 我可以看到hibernateJPA创build表,但如果我尝试访问下面的URL在数据库中的h2控制台没有表。

http://localhost:8080/console/ 

我看到这样的build议: 查看由Spring启动的embedded式H2数据库的内容

但是我不知道在spring-boot中把build议的XML放在哪里,即使我这样做了,我也不希望h2console在外部数据库configuration的时候可用,所以我更需要处理这个与一些有条件的代码(或者也许只是允许弹簧自动处理它在最理想的情况下,其中我只包括H2时,mavenconfiguration文件被激活)。

有没有人有一些示例代码显示如何让H2控制台在启动工作(也是如何找出弹簧使用的jdbc连接string是什么)?

这是我如何得到H2控制台与H2的春季启动。 我不确定这是否正确,但由于没有其他人提供解决scheme,所以我会build议这是做到这一点的最好方法。

在我的情况下,我为数据库select了一个特定的名称,以便在启动H2控制台(本例中为“AZ”)时可以input一些内容。 我认为所有这些都是必需的,尽pipe看起来像spring.jpa.database平台不会伤害任何东西。

在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(或某种configuration)中:

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

然后你可以在{server} / console /上访问H2控制台。 input这个JDBC URL:jdbc:h2:mem:AZ

从Spring Boot 1.3.0.M3 ,H2控制台可以自动configuration。

先决条件是:

  • 您正在开发一个Web应用程序
  • Spring Boot开发工具已启用
  • H2在类path上

即使您不使用Spring Boot开发工具,仍然可以通过将spring.h2.console.enabled设置为true来自动configuration控制台

查看这部分文档的所有细节。

我find了一个关于这个主题的好教程:

https://springframework.guru/using-the-h2-database-console-in-spring-boot-with-spring-security/

基本上,对我来说正确的JDBC URL是: jdbc:h2:mem:testdb

与分步指南类似的答案。

  1. 开发人员工具依赖项添加到您的pom.xmlbuild.gradle

Maven的

 <dependencies> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-devtools</artifactId> <optional>true</optional> </dependency> </dependencies> 

摇篮

 dependencies { compile("org.springframework.boot:spring-boot-devtools") } 
  1. http://localhost:8080/h2-console/
  2. 指定jdbc:h2:mem:testdb作为JDBC URL
  3. 您应该将您在项目中指定的实体看作表格。

http://docs.spring.io/spring-boot/docs/current/reference/html/common-application-properties.html

H2 Web控制台(H2ConsoleProperties):

 spring.h2.console.enabled=true //Enable the console. spring.h2.console.path=/h2-console //Path at which the console will be available. 

使用默认的用户名(sa)和密码(空),将以上两行添加到我的application.properties文件中足以访问H2数据库Web控制台。

我在/resources/application.properties中只有以下属性。 运行spring引导后,使用这个URL( http:// localhost:8080 / h2-console / ),H2控制台中的表是可见的,并且可以读取查看表数据,也可以运行简单的SQL命令。 有一件事,在你的java代码中,在获取数据的时候,列名是大写的,即使schema.sql使用的是小写的名字:)

 spring.datasource.initialize=true spring.datasource.url=jdbc:h2:mem:testdb;DB_CLOSE_DELAY=- 1;DB_CLOSE_ON_EXIT=FALSE spring.datasource.driverClassName=org.h2.Driver spring.datasource.username=sa spring.datasource.password= spring.h2.console.enabled=true 

为了获得表,你需要做的是创build2个sql文件schema.sql(用于表创build)和data.sql(用于创build表的数据)。 这些文件要放在src / main / resources文件夹中。 Spring引导自动检测它们并在运行时处理其余部分。

如果在项目中使用超过2个数据库,请确保使用特定的文件,如(schema-h2.sql – 对于h2 DB,schema-oracle.sql – 对于Oracle DB)。 data.sql也一样。

还要确保通过在schema.sql中添加drop table语句作为第一条语句来删除表。 避免追加重复logging。

春季启动链接在这里。

我的application.properties如下。

 spring.datasource.url=jdbc:h2:~/file/Shiva;DB_CLOSE_DELAY=-1;DB_CLOSE_ON_EXIT=FALSE spring.datasource.driver-class-name=org.h2.Driver spring.datasource.username=sa spring.datasource.password= spring.datasource.platform=h2 spring.jpa.database-platform=org.hibernate.dialect.H2Dialect spring.h2.console.enabled=true spring.datasource.initialize=true spring.error.whitelabel.enabled=true spring.h2.console.path=/console spring.jpa.hibernate.ddl-auto=none spring.datasource.continue-on-error=true spring.jpa.hibernate.ddl-auto=create spring.hibernate.hbm2ddl.auto=update spring.hibernate.show_sql=true 

您可以按照以下链接中的步骤操作。

https://springframework.guru/using-the-h2-database-console-in-spring-boot-with-spring-security/

如果您使用Spring Boot的开发人员工具,则默认启用H2 Console。 它可以从/h2-console /访问。 在login界面上,inputJDBC URL使用值jdbc:h2:mem:testdb 。 注意memstring。

如果您不使用Spring Boot的开发人员工具,则可以使用spring.h2.console.enabled=trueapplication.properties启用控制台。 这将启用/h2-console/h2-console 。 如果要更改URL,则可以使用spring.h2.console.path=my_console_path添加另一个条目。

默认模式名称是testdb

Spring Boot文档中的更多细节。