回答:
Spring Cloud
みんなに聞いたところ、ここにある情報を共有したいと思った。
bootstrap.yml
はの前に読み込まれapplication.yml
ます。
通常、次の場合に使用されます。
spring.application.name
、spring.cloud.config.server.git.uri
内部で指定する必要がありますbootstrap.yml
encryption/decryption
情報技術的にbootstrap.yml
は、親のSpringによってロードされApplicationContext
ます。その親ApplicationContext
は、を使用する親の前にロードされますapplication.yml
。
bootstrap.yml
か?
bootstrap.yml
または bootstrap.properties
これは、Spring Cloudを使用していて、アプリケーションの構成がリモート構成サーバー(Spring Cloud Config Serverなど)に保存されている場合にのみ使用/必要になります。
ドキュメントから:
Spring Cloudアプリケーションは、メインアプリケーションの親コンテキストである「ブートストラップ」コンテキストを作成することによって動作します。デフォルトでは、外部ソースから構成プロパティをロードし、ローカルの外部構成ファイルのプロパティを復号化します。
なお、bootstrap.yml
またはbootstrap.properties
することができ、追加の設定(たとえば、デフォルト)が、一般的に、あなたはここでしかブートストラップ設定を配置する必要がありますが含まれています。
通常、2つのプロパティが含まれます。
spring.cloud.config.uri
)spring.application.name
)起動時に、Spring Cloudはアプリケーションの名前を使用して構成サーバーにHTTP呼び出しを行い、そのアプリケーションの構成を取得します。
application.yml
または application.properties
ブートストラッププロセス中に取得された構成はここで定義された構成をオーバーライドするため、標準のアプリケーション構成が含まれています。通常はデフォルトの構成です。
この答えは非常に美しく、「本の中で説明してきたJavaの開発者(春ブーツ、春クラウド、クラウドネイティブ・アプリケーション)について、Microservicesのインタビューの質問をすることによってMunish Chandel、バージョン1.30、2018年3月25日。
次の内容はこの本から抜粋されたものであり、この回答の全クレジットは本の著者、すなわちミュニッシュシャンデルに寄付されます。
application.yml
application.yml / application.propertiesファイルは、Spring Bootアプリケーションに固有です。アプリケーションの外部プロパティの場所を変更しない限り、Spring Bootは常に次の場所からapplication.ymlをロードします。
/src/main/resources/application.yml
アプリケーションのすべての外部プロパティをこのファイルに保存できます。Spring Bootプロジェクトで使用できる共通のプロパティは、https://docs.spring.io/spring-boot/docs/current/reference/html/common-application-properties.htmlにあります。これらのプロパティは、次のようにカスタマイズできます。アプリケーションのニーズごと。サンプルファイルを以下に示します。
spring:
application:
name: foobar
datasource:
driverClassName: com.mysql.jdbc.Driver
url: jdbc:mysql://localhost/test
server:
port: 9000
bootstrap.yml
一方、bootstrap.ymlはspring-cloud-configに固有であり、application.ymlの前にロードされます
bootstrap.ymlは、Spring Cloudを使用していて、マイクロサービス構成がリモートのSpring Cloud Config Serverに保存されている場合にのみ必要です。
bootstrap.ymlに関する重要なポイント
spring.application.name: "アプリケーション名" spring.cloud.config.server.git.uri: "git-uri-config"
spring.application.name: spring.cloud.config.uri:
起動時に、Spring Cloudはアプリケーションの名前を使用してSpring Cloud Config ServerにHTTP(S)呼び出しを行い、そのアプリケーションの構成を取得します。
application.ymlにはマイクロサービスのデフォルト構成が含まれており、ブートストラッププロセス中に(クラウド構成サーバーから)取得された構成は、application.ymlで定義された構成をオーバーライドします
ちょうど私の2セントここ..
Bootstrap.ymlまたはBootstrap.propertiesは、Spring Cloud Serverから構成をフェッチするために使用されます。
たとえば、My Bootstrap.propertiesファイルに次の構成があります
spring.application.name=Calculation-service
spring.cloud.config.uri=http://localhost:8888
アプリケーションの起動時に、http:// localhost:8888に接続してサービスの構成をフェッチし、Spring Cloud ConfigサーバーにあるCalculation-service.propertiesを確認します
起動時にCalculation-Serviceのログから検証できます
INFO 10988 --- [ restartedMain] c.c.c.ConfigServicePropertySourceLocator : Fetching config from server at : http://localhost:8888
まあ、私はこの点ですでに存在する答えに完全に同意します:
bootstrap.yml
リモート構成の場所を示すパラメーターを保存するために使用され、これらのリモート構成を使用してブートストラップアプリケーションコンテキストが作成されます。実際には、通常のプロパティを何と同じように保存することもできapplication.yml
ます。しかし、このトリッキーなことに注意してください:
bootstrap.yml
、application.ymlなど、他のほとんどのプロパティソースよりも優先順位が低くなります。ここで説明されています。明確にしましょう。関連するプロパティには次の2種類がありますbootstrap.yml
。
bootstrap.yml
プロパティホルダー(ファイルシステム、gitリポジトリなど)を見つけるために使用します。この方法で取得したプロパティは優先順位が高いため、ローカル構成で上書きできません。ここで説明されています。bootstrap.yml
。最初に説明したように、優先順位は低くなります。それらを使用してデフォルトを設定することをお勧めします。したがって、プロパティを春のブーツの上application.yml
またはbootstrap.yml
中に置くことの違いは次のとおりです。
bootstrap.yml
。application.yml
すると優先順位が高くなります。Bootstrap.ymlはサーバーから設定を取得するために使用されます。これは、Springクラウドアプリケーションまたはその他のアプリケーション向けです。通常は次のようになります。
spring:
application:
name: "app-name"
cloud:
config:
uri: ${config.server:http://some-server-where-config-resides}
アプリケーションを起動すると、指定されたサーバーに接続し、実行/デバッグ構成で説明されているSpringプロファイルに基づいて構成を読み取ろうとします。
サーバーに到達できない場合、アプリケーションはさらに先に進むことができなくなる可能性があります。ただし、プロファイルに一致する構成がローカルに存在する場合、サーバー構成は上書きされます。
良いアプローチ:
ローカル用に個別のプロファイルを維持し、さまざまなプロファイルを使用してアプリを実行します。
bootstrap.ymlのもう1つの用途は、kubernetes configmapとシークレットリソースから構成をロードすることです。アプリケーションは、spring-cloud-starter-kubernetes依存関係をインポートする必要があります。
Spring Cloud Configと同様に、これはブートストラップフレーズの間に行う必要があります。
ドキュメントから:
spring:
application:
name: cloud-k8s-app
cloud:
kubernetes:
config:
name: default-name
namespace: default-namespace
sources:
# Spring Cloud Kubernetes looks up a ConfigMap named c1 in namespace default-namespace
- name: c1
したがって、meta.name default-nameを使用してconfigmapリソースに格納されたプロパティは、application.ymlのプロパティと同じように参照できます。
そして同じプロセスが秘密に適用されます:
spring:
application:
name: cloud-k8s-app
cloud:
kubernetes:
secrets:
name: default-name
namespace: default-namespace
sources:
# Spring Cloud Kubernetes looks up a Secret named s1 in namespace default-namespace
- name: s1
bootstrap.yml
[spring-cloud-config
](cloud.spring.io/spring-cloud-config/…))に固有のものであり、正しい構成を見つけるために使用される構成です。したがって、おそらくそこにあるconfigはapplication.properties/yamlの前にロードされます