弹簧启动默认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
与分步指南类似的答案。
- 将开发人员工具依赖项添加到您的
pom.xml
或build.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") }
- 从
http://localhost:8080/h2-console/
- 指定
jdbc:h2:mem:testdb
作为JDBC URL - 您应该将您在项目中指定的实体看作表格。
从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
。 注意mem
string。
如果您不使用Spring Boot的开发人员工具,则可以使用spring.h2.console.enabled=true
在application.properties
启用控制台。 这将启用/h2-console
下/h2-console
。 如果要更改URL,则可以使用spring.h2.console.path=my_console_path
添加另一个条目。
默认模式名称是testdb
。
Spring Boot文档中的更多细节。