web-dev-qa-db-ja.com

Spring Boot JPA H2コンソールが実行されておらず、application.propertiesファイルが無視されます

Spring Bootガイドには、H2コンソールを入手できると書かれていますが、機能していません。

http:// localhost:8080/h2 / ホワイトラベルエラーページこのアプリケーションには/ errorの明示的なマッピングがないため、これはフォールバックと見なされます。 Wed Oct 26 12:31:46 BST 2016予期しないエラーが発生しました(type = Not Found、status = 404)。利用可能なメッセージはありません

次のようにapplication.propertiesファイルを作成しました

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

私のプロジェクトは this に基づいています

デフォルトのパス/h2-consoleも機能しません。

Application.Javaに追加することで問題が解決する別の答えを見つけました:

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

application.propertiesファイル内のすべてが無視されます。追加してみました:

spring.datasource.url=jdbc:h2:file:~/portal;DB_CLOSE_ON_EXIT=FALSE
spring.datasource.username=sa
spring.datasource.password=
spring.datasource.driverClassName=org.h2.Driver

ただし、データベースは引き続きメモリ内にのみ作成されます。

5
clickcell

あなたの現在の場所src\main\Java\h‌​Ello\application.pro‌​pertiesが犯人です。 2つの理由で。

  1. 非Java src\main\Javaのリソースは無視されます
  2. ルートまたはconfigディレクトリ内のapplication.propertiesのみ、または考慮されます(デフォルト)。 ( リファレンスガイド を参照してください)。

修正は、application.propertiessrc\main\resourcesに移動するだけです。

7
M. Deinum

Application.propertiesでベースパスを設定しているかどうかを確認してください。

たとえば、設定がある場合

server.contextPath=/api

下のh2コンソールにアクセスします

http:// localhost:8080/api/h2-console

明らかですが、それは私にとってそれでした

6
Falco Winkler

/の前にspring.h2.console.pathがありません。次のようになっている必要があります:

spring.h2.console.path=/h2

また、spring.h2.console.path/h2-consoleが利用できなくなったことを示す場合

よろしく

3

この問題のもう1つの考えられる原因は、スプリングセキュリティを使用している場合です。その場合、定義したh2-consoleURLに特定の権限を追加することをお勧めします。たとえば、デフォルトのh2-console構成(_spring.h2.console.path_プロパティなし)の場合、これをWebSecurityConfigurerAdapter拡張クラス:

_@Override
protected void configure(HttpSecurity http) throws Exception {
    http.authorizeRequests()
        .antMatchers("/h2-console/**").permitAll()
        .anyRequest().authenticated();
    http.headers().frameOptions().sameOrigin();
}
_

最後の行--http.headers().frameOptions().sameOrigin();にも注意してください。コンソールにログインするときにWhitelableページエラーを防ぐ必要があります。これについても説明されています ここ

1
saar schweid

削除する <scope>test</scope> from h2 dependency in pom.xml私の場合は機能します。変更後は、再インストールして再度ビルドすることを忘れないでください。

<!-- H2 database -->
<dependency>
   <groupId>com.h2database</groupId>
   <artifactId>h2</artifactId>
   <version>1.4.199</version>
   <!-- <scope>test</scope> -->
</dependency>
0
Tiffany Wang

Gradle宣言でcompileそれ以外の場合はtestCompileを使用しましたが、問題なく動作しました。

例:

compile group: 'com.h2database', name: 'h2', version: '1.4.200'
0

この問題については、application.propertiesにデフォルトの文字列を追加するだけで機能します。

spring.datasource.url=jdbc:h2:file:~/test
spring.datasource.username=sa
spring.datasource.password=
spring.datasource.driver-class-name=org.h2.Driver

たぶん、スプリングブーツは何らかの理由でこれを設定しないでください。

0
Bruno Querino

私にとっては、コンピューターを再起動すると修正されました。

これが原因である理由はわかりませんが、ポートが占有されているか、h2関連ファイルが正しくデプロイされていない可能性があります

springBootアプリケーションを起動すると、HibernateとH2のログ行が表示されることを確認してください。

2017-04-22 14:41:03.195  INFO 912 --- [           main] org.hibernate.Version                    : HHH000412: Hibernate Core {5.0.12.Final}
2017-04-22 14:41:03.197  INFO 912 --- [           main] org.hibernate.cfg.Environment            : HHH000206: hibernate.properties not found
2017-04-22 14:41:03.199  INFO 912 --- [           main] org.hibernate.cfg.Environment            : HHH000021: Bytecode provider name : javassist
2017-04-22 14:41:03.278  INFO 912 --- [           main] o.hibernate.annotations.common.Version   : HCANN000001: Hibernate Commons Annotations {5.0.1.Final}
2017-04-22 14:41:03.469  INFO 912 --- [           main] org.hibernate.dialect.Dialect            : HHH000400: Using dialect: org.hibernate.dialect.H2Dialect
2017-04-22 14:41:03.935  INFO 912 --- [           main] org.hibernate.tool.hbm2ddl.SchemaExport  : HHH000227: Running hbm2ddl schema export
2017-04-22 14:41:03.945  INFO 912 --- [           main] org.hibernate.tool.hbm2ddl.SchemaExport  : HHH000230: Schema export complete
0
Dror

私の場合、 ここ で説明されているように、h2依存関係からタグ<scope>runtime</scope>を削除する必要がありました。

0
Doe McBond