PropertyPlaceholderConfigurer просто не работает в Tomcat, пожалуйста, помогите - PullRequest
0 голосов
/ 16 февраля 2011

В моем веб-приложении, развернутом в среде Tomcat, у меня есть один файл конфигурации Spring, который содержит placeHolder, например, $ {myurl}. Чтобы заменить заполнитель, я создал applicationContext.xml в каталоге WEB-INF, который содержит bean-компонент PropertyPlaceholderConfigurater, и установил его местоположение в файле свойств, который также находится в каталоге 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}

Я пытался поместить файл свойств в classpath, абсолютный путь и WEB-INF, все результаты одинаковы.

Есть предложения? Спасибо.

1 Ответ

2 голосов
/ 16 февраля 2011

Вместо перечисления файлов xml в web.xml попробуйте импортировать их в applicationContext.xml:

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

Обновление. Похоже, вы переопределяете конфигуратор местозаполнителя в дочернем XML-файле, переопределяя его из родительского, который указывает целевой файл свойств. Удалите объявление configurer из дочернего xml.

...