配置和讀取多個Properties文件

1. 使用PropertyPlaceholderConfigurer

加載一個文件時:


加載多個文件時:

整合多工程下的多個分散的Properties文件時:


其中order屬性代表其加載的順序,如果沒有設置就按照加載xml文件時的順序,而ignoreUnresolvablePlaceholders爲是否忽略不可解析的Placeholder,如果配置了多個PropertyPlaceholderConfigurer,則該屬性必須設置且爲true,否則propertyConfigurerForProject2properties文件不會被加載.

注意事項:
(1)如果上面的dbQuery.propertiesjdbc-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  


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章