Spring構成のブートストラップとアプリケーションのプロパティ
1. 概要
Spring Bootは、独創的なフレームワークです。 それにもかかわらず、通常、application.propertiesなどのアプリケーション構成ファイルで自動構成されたプロパティをオーバーライドすることになります。
ただし、Spring Cloudアプリケーションでは、bootstrap.propertiesという別の構成ファイルを使用することがよくあります。
このクイックチュートリアルでは、bootstrap.propertiesとapplication.propertiesのの違いについて説明します。
2. アプリケーション構成ファイルはいつ使用されますか?
アプリケーションコンテキストの構成には、application.ymlまたはapplication.propertiesを使用します。
Spring Bootアプリケーションが起動すると、明示的に構成する必要のないアプリケーションコンテキストが作成されます。これは、すでに自動構成されています。 ただし、 Spring Bootは、これらのプロパティをオーバーライドするさまざまな方法を提供します。
これらは、コード、コマンドライン引数、 ServletConfig initパラメーター、 ServletContext initパラメーター、Javaシステムプロパティ、オペレーティングシステム変数、およびアプリケーションプロパティファイルでオーバーライドできます。
覚えておくべき重要なことは、これらのアプリケーションプロパティファイルは、他の形式のアプリケーションコンテキストプロパティをオーバーライドする場合と比較して、優先順位が最も低いということです。
アプリケーションコンテキストでオーバーライドできるプロパティをグループ化する傾向があります。
- コアプロパティ(ロギングプロパティ、スレッドプロパティ)
- 統合プロパティ( RabbitMQ プロパティ、 ActiveMQ プロパティ)
- Webプロパティ( HTTP プロパティ、 MVC プロパティ)
- セキュリティプロパティ( LDAP プロパティ、 OAuth2 プロパティ)
3. ブートストラップ構成ファイルはいつ使用されますか?
ブートストラップコンテキストの構成には、bootstrap.ymlまたはbootstrap.propertiesを使用します。 このようにして、ブートストラップとメインコンテキストの外部構成を適切に分離します。
ブートストラップコンテキストは、外部ソースから構成プロパティをロードし、ローカル外部構成ファイルのプロパティを復号化する役割を果たします。
Spring Cloudアプリケーションが起動すると、ブートストラップコンテキストが作成されます。 最初に覚えておくべきことは、ブートストラップコンテキストがメインアプリケーションの親コンテキストであることです。
覚えておくべきもう1つの重要な点は、これら2つのコンテキストが環境を共有していることです。これは、Springアプリケーションの外部プロパティのソースです。 アプリケーションコンテキストとは対照的に、ブートストラップコンテキストは、外部構成を見つけるために異なる規則を使用します。
構成ファイルのソースは、たとえば、ファイルシステムまたはgitリポジトリーにすることができます。 サービスは、spring-cloud-config-client依存関係を使用して構成サーバーにアクセスします。
簡単に言うと、構成サーバーは、アプリケーションコンテキスト構成ファイルにアクセスするためのポイントです。
4. 簡単な例
この例では、ブートストラップコンテキスト構成ファイルが spring-cloud-config-client 依存関係を構成して、適切なアプリケーションプロパティファイルをロードします。
bootstrap.propertiesファイルの例を見てみましょう。
spring.application.name=config-client
spring.profiles.active=development
spring.cloud.config.uri=http://localhost:8888
spring.cloud.config.username=root
spring.cloud.config.password=s3cr3t
spring.cloud.config.fail-fast=true
management.security.enabled=false
5. 結論
Spring Bootアプリケーションとは対照的に、Spring Cloudアプリケーションは、アプリケーションコンテキストの親であるブートストラップコンテキストを備えています。 どちらも同じEnvironmentを共有していますが、外部構成ファイルを見つけるための規則は異なります。
ブートストラップコンテキストはbootstrap.propertiesまたはbootstrap.yamlファイルを検索していますが、アプリケーションコンテキストはapplication.propertiesまたはを検索しています]application.yamlファイル。
そしてもちろん、ブートストラップコンテキストの構成プロパティは、アプリケーションコンテキストの構成プロパティの前にロードされます。