1. 程式人生 > 其它 >Spring啟動時指定properties檔案B 依賴於properties檔案A的配置項x (Spring multiple properties files picking one by config item in parent properties file)

Spring啟動時指定properties檔案B 依賴於properties檔案A的配置項x (Spring multiple properties files picking one by config item in parent properties file)

問題描述

在一個多環境的專案中,程式碼裡可能會存在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表示式

以上。