基於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
正如你所看到的,汽車是一個列表,但汽車,默認是沒有的。我知道,如果你定義默認配置文件使得「扁平化」的佈局相匹配的活動配置文件,春天會很樂意合併這兩個配置文件,使得活動配置文件定義的屬性將覆蓋默認值。
我的挑戰是,我想要一個單默認設置覆蓋每個列表對象的,因此所得到的性能最終是這樣的:
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對象,並應用在兩個合併操作將無法正常工作。
本質上,我需要發生的是這兩組屬性合併之前實例化和設置Car對象的值。
我希望有一種方法,我能夠領略到春天的屬性解析器,這樣我可以覆蓋默認行爲,雖然我不是非常有春天的這個方面不夠熟悉,所以我真的不知道在哪裏開始。
你的聲明「正如你所看到的,汽車是一個列表,但汽車,默認是不」是假的,即使你把它改寫爲「如你所見,*爲*汽車的價值是有順序的,但* * cars-default的值不是「。這兩個值都是序列。 'cars'是一個以字符串形式加載的標量,'cars-default'也是。 他們是在你的YAML配置文件中的** 2個**文件,每個頂級映射的兩個鍵。 YAML沒有名爲'List'的概念。 'List'是在Java程序中加載YAML文件時所表示的序列。您的第二個「文件」無效YAML – Anthon
對不起,非常深夜,並錯誤地鍵入YAML。它已被修復。 順便說一句 - 如果我改變汽車默認的序列,改變的關鍵,只是「汽車」,Spring將合併默認與活動(主)配置文件中的第一個序列,而不是休息。這就是我試圖通過Spring以編程方式實現的,如果甚至可能的話。 – bitstream