我的spring bean定义有一个奇怪的问题。我的应用程序是一个多模块的东西。 目前我有一个名为core-lib的项目,它有一个spring.xml文件,定义了一个PropertyPlaceholderConfigurer,如下所示:
<bean id="corePropertyConfigurer" class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
<property name="order" value="10" />
<property name="locations">
<list>
<!-- default properties files containing ALL possible properties -->
<value>classpath:default.connection.properties</value>
<value>classpath:default.mq.properties</value>
<!-- installation specific, optional properties file containing overridden properties -->
<value>classpath:connection.properties</value>
<value>classpath:mq.properties</value>
</list>
</property>
<property name="ignoreResourceNotFound" value="true" />
</bean>
其次我有一个依赖项目,它有自己的spring.xml文件,包括core-lib项目中的一个。此外,它定义了第二个PropertyPlaceholderConfigurer:
<!-- import configuration from service layer -->
<import resource="classpath:spring.xml"/>
<bean id="commPropertyConfigurer" class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
<property name="order" value="20" />
<property name="locations">
<list>
<!-- properties files containing ALL possible properties -->
<value>classpath:processing.properties</value>
</list>
</property>
<property name="ignoreResourceNotFound" value="true" />
</bean>
现在我的行为是由于缺少属性而无法实例化第二个Spring PlaceholderConfigurer中定义的bean:
BeanDefinitionStoreException:类路径资源[comm-server.spring.xml]中定义的名称为'commServer'的bean定义无效:无法解析占位符'comm.server.CommServer.port'
如果我在PropertyPlaceholderConfigurer类中设置断点,则只会触发第一个bean实例,而不会触发第二个bean实例。有人有类似的设置,可以给我一些建议吗?
谢谢,
塞巴斯蒂安
答案 0 :(得分:0)
好的,我自己解决了,虽然我不明白为什么这样做很奇怪。 我在第二个占位符中定义了一个不同的前缀(?{而不是$ {),现在它正在工作。我原本以为这可以在没有任何特殊前缀的情况下工作......
答案 1 :(得分:0)
通过定义新的占位符前缀和后缀,有一种更舒适的方式:
<bean id="propertyConfigurer"
class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
<property name="location">
<value>classpath:configuration.properties</value>
</property>
<property name="placeholderPrefix" value="myprefix{" />
<property name="placeholderSuffix" value="}" />
</bean>
在此处找到:http://javalibs.blogspot.co.at/2008/04/java-spring-framework-multiple.html