我正在使用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