PropertyPlaceholderConfigurer

spring的框架中为您提供了一个 PropertyPlaceholderConfigurer的实现类别: 藉由这个类别,您可以将一些组态设定,移出至.properties档案中,如此的安排可以让XML定义文件负责系统相关设定,而.properties檔可 以作为客户根据需求,自定义一些相关的参数。

来看一个Bean定义档的实际例子:

  • beans-config.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="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.properties

onlyfun.caterpillar.helloWord=Welcome!

在helloBean的helloWord属性中,${onlyfun.caterpillar.helloWord}将会被hello.properties的helloWord所取代。

如果有多个.properties档案,则可以透过locations属性来设定,例如:

  • beans-config.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>