spring中propertyplaceholderconfigurer簡介

Spring的框架中爲您提供了一個 BeanFactoryPostProcessor 的實做類別: org.springframework.beans.factory.config.PropertyPlaceholderConfigurer。藉由這個類別,您能夠將一些組態設定,移出至.properties檔案中,如此的安排可讓XML定義檔負責系統相關設定,而.properties檔能夠做爲客戶根據需求,自定義一些相關的參數。
來看一個Bean定義檔的實際例子:
beans-config.xmlweb

Xml代碼 :spring

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE beans PUBLIC "-//SPRING/DTD BEAN/EN" "http://www.springframework.org/dtd/spring-beans.dtd">
<beans>
    <bean id="configBean" class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
<property name="location">
<value>hello.properties</value>
</property>
</bean> <bean id="helloBean" class="onlyfun.caterpillar.HelloBean"> <property name="helloWord"> <value>${onlyfun.caterpillar.helloWord}</value> </property> </bean> </beans>

假設在helloBean中有許多依賴注入的屬性,這些都是比較不常變更的屬性,而其中helloWord會常常變更,能夠透過hello.properties來簡單的設定,而這個資訊已設定在configBean的location屬性中:
hello.propertiessql

onlyfun.caterpillar.helloWord=Welcome!

在helloBean的helloWord屬性中,${onlyfun.caterpillar.helloWord}將會被hello.properties的helloWord所取代。
若是有多個.properties檔案,則能夠透過locations屬性來設定,例如:
beans-config.xml數據庫

Xml代碼 :框架

<?xml version="1.0" encoding="UTF-8"?> 
<!DOCTYPE beans PUBLIC "-//SPRING/DTD BEAN/EN" "http://www.springframework.org/dtd/spring-beans.dtd"> 
<beans> 
    <bean id="configBean" class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer"> <property name="locations"> 
        <list>
            <value>hello.properties</value> 
            <value>welcome.properties</value> 
            <value>other.properties</value> 
        </list>
    </property>
    </bean> 

    <bean id="helloBean" class="onlyfun.caterpillar.HelloBean"> 
        <property name="helloWord"> 
            <value>${onlyfun.caterpillar.helloWord}</value> 
        </property> 
          ...  
        </bean> 
</beans>

PropertyPlaceholderConfigurer類就是bean factory post-processor的一種,它的做用是一個資源屬性的配置器,可以將BeanFactory的裏定義的內容放在一個以.propertis後綴的文件中。
例如---spring-context.xml----工具

Xml代碼 :post

<bean id="propertyConfigurer" class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer"> 
    <property name="locations"> 
        <list>
            <value>/WEB-INF/jdbc.properties</value>
        </list> 
    </property> 
</bean>
</bean> 

<bean id="dataSource" class="org.springframework.jdbc.datasource.DriverManagerDataSource"> 
    <property name="driverClassName"><value>${driver}</value></property> 
    <property name="url"><value>jdbc:${dbname}</value></property> 
</bean>

 

而實際的jdbc.propertis文件是
url

jdbc.driverClassName=org.hsqldb.jdbcDriver 
jdbc.url=jdbc:hsqldb:hsql://production:9002 
jdbc.username=sa 
jdbc.password=root


而jdbc.propertis是怎樣引用的呢: 將上邊一段配置註冊在web.xml中就能夠了spa

Xml代碼 :code

<context-param>
    <param-name>contextConfigLocation</param-name> 
    <param-value>/WEB-INF/spring-context.xml</param-value> 
</context-param> 固然,不要忘了spring的監聽器註冊  

<listener> 
    <listener-class> 
        org.springframework.web.context.ContextLoaderListener  
    </listener-class> 
</listener>

這樣,一個簡單的數據源就設置完畢了。 實際上,PropertyPlaceholderConfigurer起的做用就是將佔位符指向的數據庫配置信息放在bean中定義 的工具。

相關文章
相關標籤/搜索