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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值