一尘不染

我的applicationContext中可以有多个PropertyPlaceHolderConfigurer吗?

spring

我需要根据给定的系统属性加载特定的applicationContext.xml文件。这本身将加载具有实际配置的文件。因此,我需要2个PropertyPlaceHolderConfigurer,一个可解决系统参数,另一个在实际配置中。

任何想法如何做到这一点?


阅读 274

收藏
2020-04-15

共1个答案

一尘不染

是的,你可以做多个。确保设置ignoreUnresolvablePlaceholders,以便第一个将忽略它无法解析的所有占位符。

<bean id="ppConfig1" class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
   <property name="ignoreUnresolvablePlaceholders" value="true"/>
   <property name="locations">
    <list>
             <value>classpath*:/my.properties</value>
    </list>
  </property>
</bean>

<bean id="ppConfig2" class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
   <property name="ignoreUnresolvablePlaceholders" value="false"/>
   <property name="locations">
    <list>
             <value>classpath*:/myOther.properties</value>
    </list>
  </property>
</bean>

根据你的应用程序,你应该调查systemPropertiesMode,它允许你从文件中加载属性,但允许系统属性覆盖属性文件中的值(如果已设置)。

2020-04-15