`

PropertyPlaceholderConfigurer Usage

阅读更多

 

The PropertyPlaceholderConfigurer is used to externalize property values from a BeanFactory definition, into another separate file in the standard Java Properties format.

 

========Spring Config snippet==================

 

 

<bean class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">

    <property name="locations">

        <value>classpath:com/foo/jdbc.properties</value>

    </property>

</bean>

 

<bean id="dataSource" destroy-method="close" class="org.apache.commons.dbcp.BasicDataSource">

    <property name="driverClassName" value="${jdbc.driverClassName}"/>

    <property name="url" value="${jdbc.url}"/>

    <property name="username" value="${jdbc.username}"/>

    <property name="password" value="${jdbc.password}"/>

</bean>

 

 

 

 

 =========================================

 

Alternatively, you can also config the "placeholderconfigurer" like this. Pay attention: the bean acutally is never referenced by somebody, it's there, and it works.

 

<bean id="placeholderConfigurer" class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">  

<property name="searchSystemEnvironment" value="true"/> 

<property name="location" value="classpath:application.properties"/>

</bean>

 

 =========================================

 

 

The actual values come from another file in the standard Java Properties format:

 

 

jdbc.driverClassName=org.hsqldb.jdbcDriver

jdbc.url=jdbc:hsqldb:hsql://production:9002

jdbc.username=sa

jdbc.password=root

 

 

 =========================================

 

As ablove, as long as you've configged the PropertyPlaceholderconfigurer bean, you can just use ${**} variables, configed in the jdbc.properties.

 

 The PropertyPlaceholderConfigurer doesn't only look for properties in the Properties file you specify, but also checks against the Java System properties if it cannot find a property you are trying to use. This behavior can be customized by setting the systemPropertiesMode property of the configurer.

 

=======================================

Another thing to elaborate:

1) ApplicationContext -- no need for manual call.

2) BeanFactory -- you need to call propertyPlaceholderConfigurer.postProcessBeanFactory(factory); to make it work. Please refer to: http://www.cublog.cn/u/9295/showart_261437.html

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics