データベースに依存しない Spring Boot アプリケーションの起動
データベースを利用する Spring Boot アプリケーションを操作する場合、データベースが利用できないときにエラーが発生する可能性があります。イライラする。この問題を解決するには、データベースにアクセスできない場合でもアプリケーションが正常に起動するように構成する必要があります。
元のエラーの原因
初期処理中に発生したエラーデータベースを使用せずに Spring Boot アプリケーションを起動しようとする試みは、Hibernate と、テーブル構造と関係を決定するためのデータベースからのメタデータへの依存に起因します。データベースが利用できない場合、Hibernate は必要なメタデータの取得に失敗し、エラーが発生します。
解決策: Spring Boot と Hibernate の構成
この問題に対処するには、次のようにします。 application.yml で次のプロパティを設定します。 file:
spring:
datasource:
continueOnError: true
initialize: false
initialSize: 0
timeBetweenEvictionRunsMillis: 5000
minEvictableIdleTimeMillis: 5000
minIdle: 0
jpa:
show-sql: true
hibernate:
ddl-auto: none
naming_strategy: org.hibernate.cfg.DefaultNamingStrategy
properties:
hibernate:
dialect: org.hibernate.dialect.MySQL5Dialect
hbm2ddl:
auto: none
temp:
use_jdbc_metadata_defaults: false
ログイン後にコピー
- spring.datasource. continueOnError: このプロパティは、データ ソースの初期化中にエラーが発生した場合でもアプリケーションの起動を続行するように Spring に指示します。
- spring.datasource.初期化: このプロパティは、起動時にデータ ソースを初期化するかどうかを指定します。 false に設定すると、実際に接続が試行されるまでデータ ソースは初期化されません。
- spring.datasource.initialSize: このプロパティは、起動時に確立する接続の初期数を設定します。 0 に設定すると、起動時に接続が確立されないことを意味します。
- spring.datasource.timeBetweenEvictionRunsMillis: このプロパティは、データ ソースがアイドル状態の接続を確認して削除する頻度 (ミリ秒単位) を決定します。
- spring.datasource.minEvictableIdleTimeMillis: このプロパティは、EvictableIdleTimeMillis の最小時間 (ミリ秒単位) を設定します。アイドル状態の接続は、エビクションの対象となる前にプールに残ることができます。
- spring.datasource.minIdle: このプロパティは、プール内に保持するアイドル状態の接続の最小数を設定します。
- spring.jpa .hibernate.ddl-auto: このプロパティは、Hibernate がデータベース スキーマに対して実行するアクションを設定します。 none に設定すると、データベース スキーマに変更を加えないことを意味します。
- spring.jpa.hibernate.dialect: このプロパティは、使用する Hibernate 方言を指定します。適切なダイアレクトを使用すると、Hibernate がデータベースと互換性のある SQL を生成します。
- spring.jpa.hibernate.properties.hibernate.temp.use_jdbc_metadata_defaults: このプロパティは、Hibernate が JDBC メタデータを使用してテーブル構造を決定するかどうかを指定します。そして人間関係。 false に設定すると、Hibernate がデータベースに依存できなくなり、代わりにドメイン クラスのマッピング アノテーションを使用してエンティティを定義します。
ソリューションの利点
これらの構成を実装することで、Spring Boot アプリケーションは次のようになります。
- データベースが利用できない場合でも正常に起動します。
- データベースが利用可能になったときにその場で接続を確立し、再起動が必要です。
- 実行中のアプリケーションに影響を与えることなく、データベースの停止を適切に処理します。
以上がデータベースに依存せずに Spring Boot アプリケーションを起動するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。