2016-12-15 53 views
3

是否可以合併來自在YAML中編寫的多個彈簧引導配置文件中相同元素的列表?從多個彈簧引導YAML文件合併列表

例子:

postgres.yml包含我的Postgres數據庫信息。它也包含了我的遷移腳本的飛路的位置:

--- 
flyway: 
    locations: 
    - flyway/migrations/postgres 

同樣與我的Oracle遷移:

--- 
flyway: 
    locations: 
    - flyway/migrations/oracle 

現在,如果我要開始我的測試數據的應用程序,我想包括我test_data目錄以及(這些數據兩者的Postgres和Oracle工作):

--- 
flyway: 
    locations: 
    - flyway/test_data 

當我運行與有效簡postgres,testdata的應用由於位置條目被測試數據文件覆蓋,因此不會加載遷移。

對於這個設置,我可以創建四個配置文件來運行每個數據庫,不管有沒有測試數據,但是如果我有四個不同的數據庫和三組測試數據,我該怎麼辦?

回答

1

不幸的是,如Spring docs所述,目前這是不可能的。如果您事先知道配置文件名稱的集合,則可以通過創建單獨的列表(以配置文件名稱爲前綴)來解決此問題,然後在您的Bean中包含將它們合併到最終列表中的代碼。該代碼將迭代所有已知的配置文件名稱前綴,並且如果配置文件未處於活動狀態,則該列表將爲空。

不幸的是,如果你不擁有這個bean,比如在你的Flyway案例中,這似乎更難。但它仍然有可能。