web-dev-qa-db-ja.com

Spring Bootのプロパティファイル、YAMLファイル、およびコマンドライン引数間の優先順位

application.properties Springアプリケーションで長い間使用されていたファイル。しかし最近、私はapplication.yamlファイル。 3つすべての中の優先順位とは何か、個人を使用する利点(ある場合)。

これはばかげた質問かもしれません。しかし、私はそれらの使用法と混同しています。

12
MAC

Springプロパティの解決プロパティの順序について説明します here

application.propertiesおよびapplication.yamlの使用は想定されていません。どちらか一方の形式を使用してください。両方は使用しないでください。どちらを使用しても、プロパティの優先順位で12または13(ファイルがアプリケーションJARにパッケージ化されているかどうかに応じて)の位置で処理されます。

リンクの腐敗を避けるために、上記のリンクからの抜粋をここに含めます...

Spring Bootは、値を適切に上書きできるように設計された非常に特殊なPropertySource順序を使用します。プロパティは次の順序で考慮されます。

  1. ホームディレクトリのDevtoolsグローバル設定プロパティ(devtoolsがアクティブな場合は〜/ .spring-boot-devtools.properties)。
  2. テストの@TestPropertySourceアノテーション。
  3. テストの@ SpringBootTest#propertiesアノテーション属性。
  4. コマンドライン引数。
  5. SPRING_APPLICATION_JSONからのプロパティ(環境変数またはシステムプロパティに埋め込まれたインラインJSON)
  6. ServletConfig initパラメータ。
  7. ServletContextの初期化パラメータ。
  8. Java:comp/envのJNDI属性。
  9. Javaシステムプロパティ(System.getProperties())。
  10. OS環境変数。
  11. Random。*のプロパティのみを持つRandomValuePropertySource。
  12. パッケージ化されたjar外のプロファイル固有のアプリケーションプロパティ(application- {profile} .propertiesおよびYAMLバリアント)
  13. Jar内にパッケージ化されたプロファイル固有のアプリケーションプロパティ(application- {profile} .propertiesおよびYAMLバリアント)
  14. パッケージ化されたjar外のアプリケーションプロパティ(application.propertiesおよびYAMLバリアント)。
  15. Jar内にパッケージ化されたアプリケーションプロパティ(application.propertiesおよびYAMLバリアント)。
  16. @Configurationクラスの@PropertySourceアノテーション。
  17. デフォルトプロパティ(SpringApplication.setDefaultPropertiesを使用して指定)。
17
glytching

簡単に言えば、

yamlとプロパティファイルの両方があり、両方に同じキーがある場合、スプリングブートは最初にプロパティを検索し、見つからない場合はyamlに移動します。

4
spandey15