我的 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 实例触发,而不会为第二个实例触发。有没有人有类似的设置,可以给我一些建议?
谢谢,
塞巴斯蒂安