web-dev-qa-db-ja.com

Springブートを使用したYml構成ファイル「継承」

オンラインで正解は見つかりませんでした。

Spring Bootのymlファイルは相互に「継承」しますか?私が持っている場合:application.yml

server:
  port: 80
  Host: foo

およびapplication-profile1.ymlのみ

server:
  port: 90

したがって、アクティブプロファイルとしてprofile1を使用してSpringBootを開始した場合、server.Hostプロパティもfooに設定されますか?

10
tomer.z

はい、application.ymlファイルはどのapplication-{profile}.ymlファイルよりも優先されます。プロファイル固有のymlファイルのプロパティはデフォルトのapplication.ymlファイルの値を上書きし、プロファイル固有のymlファイルに存在しないプロパティはデフォルトのファイルからロードされます。これは、.propertiesファイルとbootstrap.ymlまたはbootstrap.propertiesに適用されます。

Spring Bootのドキュメントには、 72.7環境に応じて構成を変更する 段落で記載されています。

この例では、デフォルトのポートは9000ですが、Springプロファイルの「開発」がアクティブな場合、ポートは9001であり、「本番」がアクティブな場合は0です。

YAMLドキュメントは、検出された順序でマージされます(したがって、後の値が前の値をオーバーライドします)。

プロパティファイルで同じことを行うには、application-${profile}.propertiesを使用してプロファイル固有の値を指定できます。

8
Szymon Stepniak