我需要根据给定的系统属性加载特定的applicationContext.xml文件.这本身会加载具有实际配置的文件.因此,我需要2个PropertyPlaceHolderConfigurer,一个解析系统参数,另一个解析实际配置.
任何想法如何做到这一点?
fli*_*ken 77
是的,你可以做多个.请务必设置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>
Run Code Online (Sandbox Code Playgroud)
根据您的应用程序,您应该调查systemPropertiesMode,它允许您从文件加载属性,但允许系统属性覆盖属性文件中的值(如果已设置).
注意 - 可能存在与多个配置器相关的错误.有关详细信息,请参见http://jira.spring.io/browse/SPR-5719.
我无法让多人在当地工作......但我还没有责怪别人,除了我自己.
另一种解决方案是使用PropertyPlaceholderConfigurer的placeholderPrefix属性.您为第二个(第三个,第四个......)配置器指定它,然后为所有相应的占位符添加前缀,因此不会发生冲突.
<bean id="mySecondConfigurer"
class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer"
p:location="classpath:/myprops.properties"
p:placeholderPrefix="myprefix-"/>
<bean class="com.mycompany.MyClass" p:myprop="${myprefix-value.from.myprops}"/>
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
44996 次 |
最近记录: |