PropertyPlaceholderConfigurer只是不在tomcat中工作,请帮忙

时间:2011-02-16 19:58:49

标签: spring tomcat placeholder

在我在tomcat环境中部署的webapp中,我有一个包含placeHolder的spring配置文件,比如$ {myurl}。为了替换占位符,我在WEB-INF目录中创建了applicationContext.xml,其中包含一个PropertyPlaceholderConfigurater bean,并将其位置设置为一个属性文件,该文件也位于WEB-INF目录中。

<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
xsi:schemaLocation="
http://www.springframework.org/schema/beans    
http://www.springframework.org/schema/beans/spring-beans-2.0.xsd">
<bean id="placeHolderConfigurer"
  class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
  <property name="location" value="WEB-INF/my.properties"/>
 </bean>
  <import resource="classpath*:META-INF/springFile1.xml"/>
</beans>

然后在web.xml中,我指定上下文:

<context-param>
<param-name>contextConfigLocation</param-name>
<param-value>/WEB-INF/applicationContext.xml
    </param-value>
</context-param>

在WEB-INF / my.properties中 myurl = HTTP://www.google.com

这是springFile1.xml     

<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="
http://www.springframework.org/schema/beans    
http://www.springframework.org/schema/beans/spring-beans-2.0.xsd">

<bean id="placeholderConfig"
    class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
    <property name="placeholderPrefix" value="${" />
    <property name="placeholderSuffix" value="}" />
</bean>
<bean id="mycache" class="com.abc.MyURL"
    init-method="start" destroy-method="stop">

    <constructor-arg value="${myurl}" />
</bean>
</beans>

我一直得到未解析的价值$ {myurl}

我试图将属性文件放在类路径,绝对路径和WEB-INF中,结果都是一样的。

有什么建议吗?感谢。

1 个答案:

答案 0 :(得分:2)

不要在web.xml中列出xml文件,而是尝试在applicationContext.xml中导入它们:

<import resource="classpath*:springFile1.xml"/>

更新:您似乎正在重新定义子xml中的占位符配置器,从而覆盖父节点中的占位符配置器,它指定目标属性文件。从子xml中删除配置器声明。