如何保证在生成指定的bean之前加载Spring属性PlaceHolder?

时间:2014-05-12 06:15:50

标签: spring properties javabeans

我正在使用Spring 3.2,我正在尝试使用属性占位符定义一些bean。

<context:property-placeholder location="classpath*:/config/db2.properties"/>
<bean id="testBean" class="com.mywork.func.service.TestBean">
    <property name="driverClassName" value="${jdbc.driver}" />
    ...
</bean>

<bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource" destroy-method="close">
   <property name="driverClassName" value="${jdbc.driver}" />
   ...
</bean>

在db.properties中,我有

jdbc.driver=oracle.jdbc.driver.OracleDriver

由于代码段中列出的两个bean都使用“$ {jdbc.driver}”这样的占位符定义,但我对bean中的属性有不同的看法: 对于testBean,我得到了“oracle.jdbc.driver.OracleDriver”,而在dataSource中,我得到了“$ {jdbc.driver}”。

一些测试表明,“dataasource”在属性占位符初始化属性之前是init,而“testBean”之后是init。

有没有人能给我一些线索如何确保早期初始化属性占位符,以确保我期望利用属性占位符的任何其他bean可以获得正确的值?

有一个问题几乎和我的一样,但没有有效的答案。 How to guarantee Spring bean order? PropertyPlaceHolder issue

0 个答案:

没有答案