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
ただし、データベースは引き続きメモリ内にのみ作成されます。
あなたの現在の場所src\main\Java\hEllo\application.properties
が犯人です。 2つの理由で。
src\main\Java
のリソースは無視されますconfig
ディレクトリ内のapplication.properties
のみ、または考慮されます(デフォルト)。 ( リファレンスガイド を参照してください)。修正は、application.properties
をsrc\main\resources
に移動するだけです。
Application.propertiesでベースパスを設定しているかどうかを確認してください。
たとえば、設定がある場合
server.contextPath=/api
下のh2コンソールにアクセスします
http:// localhost:8080/api/h2-console
明らかですが、それは私にとってそれでした
/
の前にspring.h2.console.path
がありません。次のようになっている必要があります:
spring.h2.console.path=/h2
また、spring.h2.console.path
/h2-console
が利用できなくなったことを示す場合
よろしく
この問題のもう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ページエラーを防ぐ必要があります。これについても説明されています ここ 。
削除する <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>
Gradle宣言でcompileそれ以外の場合はtestCompileを使用しましたが、問題なく動作しました。
例:
compile group: 'com.h2database', name: 'h2', version: '1.4.200'
この問題については、application.propertiesにデフォルトの文字列を追加するだけで機能します。
spring.datasource.url=jdbc:h2:file:~/test
spring.datasource.username=sa
spring.datasource.password=
spring.datasource.driver-class-name=org.h2.Driver
たぶん、スプリングブーツは何らかの理由でこれを設定しないでください。
私にとっては、コンピューターを再起動すると修正されました。
これが原因である理由はわかりませんが、ポートが占有されているか、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
私の場合、 ここ で説明されているように、h2依存関係からタグ<scope>runtime</scope>
を削除する必要がありました。