1. 使用PropertyPlaceholderConfigurer類
加載一個文件時:
加載多個文件時:
整合多工程下的多個分散的Properties文件時:
其中order屬性代表其加載的順序,如果沒有設置就按照加載xml文件時的順序,而ignoreUnresolvablePlaceholders爲是否忽略不可解析的Placeholder,如果配置了多個PropertyPlaceholderConfigurer,則該屬性必須設置且爲true,否則propertyConfigurerForProject2的properties文件不會被加載.
注意事項:
(1)、如果上面的dbQuery.properties與jdbc-parms.properties文件中有相同的參數配置名稱,dbQuery.properties中配置的參數值不會被後面的覆蓋。
(2)、如果jdbc-parms.properties,base-config.properties彼此有相同參數名配置,jdbc-parms.properties中的配置的值會被覆蓋。
2. 使用PropertiesFactoryBean
使用PropertiesFactoryBean,可在Bean中直接注入Properties配置文件中的值,配置如下:
這種加載方式可以在代碼中通過@Value註解進行注入, 可以將配置整體賦給Properties類型的類變量,也可以取出其中的一項賦值給String類型的類變量。也可以使用<util:properties/>標籤,如:
<util:properties/> 標籤只能加載一個文件,當多個屬性文件需要被加載的時候,可以使用多個該標籤,<util:properties/> 標籤的實現類是PropertiesFactoryBean, 直接使用該類的bean配置,設置其locations屬性可以達到一個和上面一樣加載多個配置文件的目的。
在代碼中引用Properties中的值如下:
將配置整體賦給Properties類型的類變量:
3. PropertyOverrideConfigurer
與PropertyPlaceholderConfigurer 不同的是: PropertyOverrideConfigurer 利用屬性文件的相關信息,覆蓋XML 配置文件中定義。即PropertyOverrideConfigurer 允許XML 配置文件中有默認的配置信息。
如果PropertyOverrideConfigurer 的屬性文件有對應配置信息,則XML 文件中的配 置信息被覆蓋,否則,直接使用XML 文件中的配置信息。使用PropertyOverrideConfigurer 屬性文件的格式如下:
beanName.property=value
beanName 是屬性佔位符企圖覆蓋的bean 名, property 是企圖覆蓋的屬性名。例如 :
容器自動註冊propertyOverriderbean,讀取dbconn.properties 文件中的屬性,並用於覆蓋目標bean 的屬性。其配置文件中dataSourcebean 的屬性完全是隨意輸入的,最終被屬性文件的配置覆蓋,其屬性文件如下:
注意屬性文件的格式必須是:beanName.property=value 。