web-dev-qa-db-ja.com

SpringBootアクセス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

Beanに次のように注釈を付けています。

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

私のアプリケーションのプロパティ:

Spring DataJPAプロパティ

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

プロパティファイルにあるものをすべて削除します。あなたが言及したものはすべてデフォルトです。 Springbootは、pomでh2依存関係を特定するとすぐに、任意の方法で構成します。また、そのServletRegistrationBeanは必要ありません。それも削除します。これをプロパティファイルに入れるだけですspring.h2.console.enabled=true

デフォルトでは、コンソールには http:// localhost:8080/h2-console でアクセスできます。
デフォルトのパスはh2-consoleです。を使用して構成できます
spring.h2.console.pathプロパティ

8
pvpkiran

Pom.xmlにdevtoolsの依存関係がある場合は、デフォルトのパスをhttp://localhost:8080/h2-consoleとしてH2コンソールにアクセスできます。それ以外の場合は、以下のようにapplication.propertiesでH2のパスを指定する必要があります。


devtoolsを使用http://localhost:8080/h2-console/でアクセスできます

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

これはSpringBoot2.1.1の場合でした。他の人に役立つかもしれません

1
Patel Romil

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()

0
Mohit Bansal

ご覧ください: https://docs.spring.io/spring-boot/docs/current/reference/html/howto-database-initialization.html

このプロパティを設定してみてください:

spring.jpa.hibernate.ddl-auto=create
0
MrKiller21

まず、H2コンソールにアクセスするためにBeanを明示的に定義する必要はありません。それはすでにSpringbootによって処理されています。以下のように、application.propertiesでH2コンソールパスを定義できます。

spring.h2.path = /h2-console

次の方法でコンソールにアクセスできます

http://Host:port/h2-console

次に、createは既存のスキーマを削除するため、常にddl-autoプロパティを「create」ではなく「update」として使用します。

spring.jpa.hibernate.ddl-auto=update

Spring bootとH2のスタータープロジェクトを探している場合(ボーナスとしてHiberante Enverを使用し、不要な場合はenverパッケージと@Auditedをエンティティから削除します)-以下を試すことができます:

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

0
zeagord