でYAMLベースの設定はデフォルトで問題次のように私はYAML設定ファイルを持っている:春ブートプロジェクト
spring.profiles: master
cars:
-
color: red
style: sedan
doors: 4
-
color: blue
doors: 4
-
color: black
---
spring.profiles: default
cars-default:
color: not specified
style: not specified
doors: not specified
あなたが見ることができるように、車はリストですが、車デフォルトではありません。私が知っているのは、デフォルトのプロファイルを "flattened"レイアウトがアクティブなプロファイルと一致するように定義すると、Springは2つのプロファイルをうまくマージして、アクティブなプロファイルで定義されたプロパティがデフォルトを上書きするようにします。
私の挑戦は、結果の性質はこのように終わるので、私は、各Listオブジェクトを上書きするデフォルトの単一セットをしたいということですので、問題はもう少し複雑にするために
cars:
-
color: red
style: sedan
doors: 4
-
color: blue
style: not specified
doors: 4
-
color: black
style: not specified
doors: not specified
カーPOJOこれらのプロパティマップには、オーバーライドできないハードコーディングされたデフォルト値があります。したがって、CarオブジェクトとDefaultCarオブジェクトを単純に設定し、その両方のマージ操作を適用することはできません。
本質的には、私が必要とするのは、の前にの2つのプロパティセットがマージされ、Carオブジェクトの値をインスタンス化して設定することです。
私は、Springのプロパティ・リゾルバを利用して、デフォルトの動作を上書きできる方法があることを期待していますが、Springのこの側面について十分な知識はありません。始めること。
あなたの声明「見ることができるように、車はリストですが、車のデフォルトはありません」は、「あなたが見ることができるように*車の値はシーケンスですが、 * cars-defaultの値は "ではありません。両方の値はシーケンスです。 'cars'は文字列としてロードされるスカラーで、' cars-default'もそうです。 これらは両方とも、YAML構成ファイルの** 2つの**ドキュメントの最上位レベルのマッピングのキーです。 YAMLには 'List'という概念はありません。 'List'は、JavaプログラムでYAMLファイルをロードするときにシーケンスが表現されるものです。あなたの2番目の "ファイル"は無効ですYAML – Anthon
申し訳ありませんが、非常に深夜にYAMLを間違って入力しました。これは修正されました。 BTW - 車のデフォルトをシーケンスに変更し、キーを単に "cars:"に変更すると、Springはアクティブ(マスタ)プロファイルのFIRSTシーケンスとデフォルトをマージしますが、残りのものはマージしません。それが可能であれば、私がSpringを介してプログラムで達成しようとしていることです。 – bitstream