gpt4 book ai didi

java - 一个 Spring PropertyPlaceholderConfigurer 可以配置另一个 Spring PropertyPlaceholderConfigurer 吗?

转载 作者:行者123 更新时间:2023-12-02 07:53:27 24 4
gpt4 key购买 nike

我有一个像这样的 PropertyPlaceholderConfigurer:

<bean id="propertyPlaceholderConfigurer" class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
<property name="ignoreUnresolvablePlaceholders" value="true"/>
<property name="locations">
<list>
<value>classpath:assuredlabor/margarita-${runningMode}.properties</value>
</list>
</property>
</bean>

我希望能够在 web.xml 中指定我的运行模式,如下所示:

<context-param>
<param-name>runningMode</param-name>
<param-value>production</param-value>
</context-param>

所以我把这个 bean 放在上面描述的“main”属性 bean 之上:

<bean id="servletPropertyPlaceholderConfigurer" class="org.springframework.web.context.support.ServletContextPropertyPlaceholderConfigurer">
</bean>

但这似乎不起作用。

Spring 可以做到这一点吗?我现在使用的是2.5版本。

我发现了这个类似的问题:

PropertyPlaceholderConfigurer with Tomcat & ContextLoaderListener

但是没有讨论 ServletContextPropertyPlaceholderConfigurer,所以我认为这是一个合理的问题。

最佳答案

如果没有一些自定义编码,我认为您无法在 spring 2 中执行此操作,因为一个属性占位符无法配置另一个属性占位符。

您需要使用 spring 3 才能将其开箱即用。为了实现这一点,您必须创建一个具有您想要的值的 bean,并在设置属性占位符时使用 spring-el 来引用该 spring。有一个特殊的 bean 用于获取单独的 servlet 上下文参数,如下所示:

<bean id="runningMode" class="org.springframework.web.context.support.ServletContextAttributeFactoryBean">
<property name="attributeName" value="runningMode" />
</bean>

<bean id="propertyPlaceholderConfigurer" class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
<property name="ignoreUnresolvablePlaceholders" value="true"/>
<property name="locations">
<list>
<value>classpath:assuredlabor/margarita-#{runningMode}.properties</value>
</list>
</property>
</bean>

然后您可以引用普通 ${} 语法中的任何属性

关于java - 一个 Spring PropertyPlaceholderConfigurer 可以配置另一个 Spring PropertyPlaceholderConfigurer 吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9951552/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com