SpringBoot访问H2控制台

时间:2017-05-13 10:52:46

标签: spring jpa spring-boot spring-data-jpa h2

我有一个基本的SpringBoot应用程序,嵌入式Tomcat,Thymeleaf模板引擎。 我创建了这个bean来访问控制台:

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

但是当我访问控制台http://localhost:8080/appContext/console/login.do?jsessionid=f3585792a9bf1f0cf1a0b6a09dcefe1a

我的豆子注释如下:

@Entity
@Table(name="t_user")
public class User implements Serializable, UserDetails {
..
}

我的应用程序属性:

Spring Data JPA属性

spring.datasource.url=jdbc:h2:mem:testdb;MODE=MySQL;DB_CLOSE_ON_EXIT=FALSE
spring.datasource.username=sa
spring.datasource.password=

spring.jpa.show-sql=true
spring.jpa.properties.hibernate.format_sql=true

hibernate.dialect=org.hibernate.dialect.H2Dialect

但是我没有看到JPA创建的任何表格:

enter image description here

5 个答案:

答案 0 :(得分:7)

删除属性文件中的所有内容。你提到的所有这些都是默认的。一旦它确定了你的pom中的h2依赖性,Springboot就会以任何方式配置它。而且你也不需要那个ServletRegistration bean。删除它。只需将其放在属性文件中即可 spring.h2.console.enabled=true

默认情况下,可以在http://localhost:8080/h2-console上访问控制台 默认路径是h2-console。您可以使用
配置它 spring.h2.console.path属性

答案 1 :(得分:1)

如果pom.xml中具有devtools依赖项,则可以使用默认路径http://localhost:8080/h2-console来访问H2控制台,否则我们必须在application.properties中指定H2的路径,如下所示


可以通过http://localhost:8080/h2-console/

访问

使用devtools

POM:spring-boot-starter,h2,spring-boot-starter-web,spring-boot-devtools

没有devtools -我们需要在属性中进行设置:

spring.h2.console.enabled=true 
spring.h2.console.path=/h2-console

POM:spring-boot-starter,h2,spring-boot-starter-web

Spring Boot 2.1.1的情况可能对其他人有所帮助

答案 2 :(得分:0)

查看:https://docs.spring.io/spring-boot/docs/current/reference/html/howto-database-initialization.html

尝试设置此属性:

spring.jpa.hibernate.ddl-auto=create

答案 3 :(得分:0)

首先,您不必显式定义bean来访问H2 Console。它已经被Springboot照顾了。您可以在application.properties中定义H2控制台路径,如下所示:

spring.h2.path = /h2-console

您可以通过

访问控制台

http://host:port/h2-console

其次,始终将ddl-auto属性用作“update”而不是“create”,因为create将删除现有模式。

spring.jpa.hibernate.ddl-auto=update

如果你正在寻找一个Spring boot和H2的初学者项目(以Hiberante Enver为奖励,如果你不想要的话,从实体中删除enver包和@Audited) - 你可以尝试下面的一个:< / p>

https://github.com/sundarsy/springboot-h2-enver

答案 4 :(得分:0)

我们只需要在application.properties文件中进行以下配置。

spring.h2.console.enabled=true

默认情况下,h2在http://localhost:8080/h2-console/可用

但是可以在application.properties中定义spring.h2.console.path=/h2,然后可以使用http://localhost:8080/h2来访问h2

现在,如果您已在应用程序中实现了SecurityConfig,则需要添加

.and().csrf().ignoringAntMatchers("/h2/**") // Make H2-Console non-secured; for debug purposes
.and().headers().frameOptions().sameOrigin() // Allow pages to be loaded in frames from the same origin; needed for H2-Console

http.authorizeRequests()