1. ホーム
  2. java

[解決済み] Spring Boot デフォルトの H2 jdbc 接続 (および H2 コンソール)

2022-08-13 23:17:30

質問

私は、春ブートが作成する埋め込みH2データベースについて、H2データベースのコンテンツを見ようとしているだけです。 application.properties で何も指定せず、mvn spring:runで開始します。hibernate JPAがテーブルを作成しているのを見ることができますが、以下のURLでh2コンソールにアクセスしようとすると、データベースにはテーブルがありません。

http://localhost:8080/console/

このような提案を見かけます。 Springで起動した埋め込みH2データベースの内容を表示する

しかし、提案されたXMLをspring-bootのどこに置けばいいのかわからないし、たとえそうしたとしても、私は h2console を外部データベースが設定されたときに利用できるようにしたくないので、何らかの条件付きコードでこれを処理する必要があります (または、mavenプロファイルが有効なときにのみH2を含めるという最も理想的なケースでは、springが自動的にこれを処理するようにするだけかもしれません)。

どなたか、ブート時に H2 コンソールを動作させる方法 (および spring が使用している jdbc 接続文字列を見つける方法) を示すサンプル コードをお持ちですか?

どのように解決するのですか?

これは、私が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