我有一个基本的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.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创建的任何表格:
答案 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>
答案 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()