Spring啟動時指定properties檔案B 依賴於properties檔案A的配置項x (Spring multiple properties files picking one by config item in parent properties file)
阿新 • • 發佈:2021-12-17
問題描述
在一個多環境的專案中,程式碼裡可能會存在N多properties配置檔案,但是在執行時僅希望其中一份生效;舉個例子,test環境還細分專案test環境:aws-test, azure-test,common-test。執行時為了減少配置項,僅會指定根配置檔案root.properties,希望在根配置檔案內指定具體專案的env_xxx_biz.properites。
如何解決
<util:properties id="rootConf" location="file:${root_conf:conf/root.properties}" /> <util:properties id="bizConf" location="#{rootConf.getProperty('biz.config.location')?:'/WEB-INF/biz-${spring.profiles.active}.properties'}"/>
如上示例程式碼,rootConf 是spring applicationContext.xml裡配置的 root properties 檔案,其內容可能會有一個key為biz.config.location的配置項,如存在以該key指向的properties檔案為具體的bizConf檔案,如沒有該配置項,會以預設的biz properties 檔案進行例項化。bizConf的配置使用語法為 spring spel表示式。
以上。