我有Spring Framework的下一个属性文件
config.properties
内容
environment=devel //posible values: devel, testing, prod
并使用之前的环境属性,选择以下某些文件进行动态加载
config-service1-devel.properties
config-service1-testing.properties
config-service1-prod.properties
config-serviceN-devel.properties
config-serviceN-testing.properties
config-serviceN-prod.properties
然后,使用spring我想加载属性,我解决了加载第一个属性文件,但我不明白如何使用表达式语言来完成依赖属性的值。
<bean id="MainApplicationProperties"
class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
<property name="location"
value="file://#{systemProperties['jboss.server.home.dir']}/conf/services.properties" />
<property name="placeholderPrefix" value="$mainProperty{" />
<property name="placeholderSuffix" value="}" />
</bean>
<bean id="SecondApplicationProperties"
class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer"
depends-on="MainApplicationProperties">
<property name="locations">
<list>
<value>file://#{systemProperties['jboss.server.home.dir']}/conf/serviceOne/service1-$mainProperty{environment}.properties</value>
<value>file://#{systemProperties['jboss.server.home.dir']}/conf/serviceTwo/service2-$mainProperty{environment}.properties</value>
<value>file://#{systemProperties['jboss.server.home.dir']}/conf/serviceN/serviceN-$mainProperty{environment}.properties</value>
</list>
</property>
</bean>
错误输出是下一个,
java.io.FileNotFoundException: /..../conf/serviceOne/service1-$mainProperty{environment}.properties (No such file or directory)
我的意见是,价值没有取代
helpme,谢谢
答案 0 :(得分:1)
问题在于,当BeanFactoryPostProcessors
开始被调用时,它们已经被实例化。所以即使第一个PropertyPlaceholderConfigurer
修改了第二个PropertyPlaceholderConfigurer
的bean定义,它也没有效果,因为两个bean都已经实例化了。