Spring Boot のデフォルトの H2 JDBC 接続 (および H2 コンソール) 質問する

Spring Boot のデフォルトの H2 JDBC 接続 (および H2 コンソール) 質問する

私は、何も指定せずにapplication.propertiesmvn spring:run で起動したときに spring-boot が作成する埋め込み H2 データベースの H2 データベース コンテンツを確認しようとしているだけです。Hibernate JPA がテーブルを作成しているのは確認できますが、以下の URL で h2 コンソールにアクセスしようとすると、データベースにテーブルがありません。

http://localhost:8080/console/

次のような提案があります:Spring によって開始された埋め込み H2 データベースの内容を表示します。

しかし、Spring-Boot で提案された XML をどこに置くべきかわかりません。また、たとえ置いたとしても、h2console外部データベースが構成されている場合は、その XML を利用できないようにしたいので、何らかの条件付きコードでこれを処理する必要がある可能性が高くなります (または、Maven プロファイルがアクティブ化されたときにのみ H2 を含める最も理想的なケースでは、Spring が自動的に処理できるようにするだけかもしれません)。

ブート時に H2 コンソールを動作させる方法 (および Spring が使用している JDBC 接続文字列を確認する方法) を示すサンプル コードを持っている人はいますか?

ベストアンサー1

これは、H2 を使用して Spring Boot で H2 コンソールを動作させる方法です。これが正しいかどうかはわかりませんが、他に誰も解決策を提示していないので、これが最善の方法であると提案します。

私の場合、H2 コンソールを起動するときに入力するものが何かあるように、データベースに特定の名前を選択しました (この場合は「AZ」)。spring.jpa.database-platform を省略しても問題ないようです。ただし、これらすべてが必須だと思います。

application.properties 内:

spring.datasource.url=jdbc:h2:mem:AZ;DB_CLOSE_DELAY=-1;DB_CLOSE_ON_EXIT=FALSE
spring.datasource.driverClassName=org.h2.Driver
spring.datasource.username=sa
spring.datasource.password=
spring.jpa.database-platform=org.hibernate.dialect.H2Dialect

Application.java (または何らかの構成) の場合:

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

次に、{server}/console/ で H2 コンソールにアクセスできます。JDBC URL として、jdbc:h2:mem:AZ と入力します。

おすすめ記事