Свойства не подставляются в applicationContext.xml - PullRequest
0 голосов
/ 27 февраля 2012

У меня очень странная проблема. Я пытаюсь настроить свойства моего источника данных, объявленного в моем весеннем файле applicationcontext.xml, через класс PropertyPlaceholderConfigurer. Файл контекста приложения выглядит следующим образом: -

<?xml version="1.0" encoding="UTF-8"?>

<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"   xmlns:context="http://www.springframework.org/schema/context"
xmlns:aop="http://www.springframework.org/schema/aop" xmlns:tx="http://www.springframework.org/schema/tx"
xmlns:ws="http://jax-ws.dev.java.net/spring/core" xmlns:wss="http://jax-ws.dev.java.net/spring/servlet"
xmlns:jms="http://www.springframework.org/schema/jms"
xsi:schemaLocation="http://jax-ws.dev.java.net/spring/servlet http://jax-ws.dev.java.net/spring/servlet.xsd
    http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-3.0.xsd
    http://jax-ws.dev.java.net/spring/core http://jax-ws.dev.java.net/spring/core.xsd
    http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.0.xsd
    http://www.springframework.org/schema/jms http://www.springframework.org/schema/jms/spring-jms-3.0.xsd
    http://www.springframework.org/schema/security http://www.springframework.org/schema/security/spring-security-3.0.4.xsd
    http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-3.0.xsd
    http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.0.xsd">

<!--  Spring configurations used by LCM Impl classes -->
<bean id="lcmPropertyConfigurer"
       class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
    <property name="locations">
        <list>
            <value>classpath:/activemq.properties</value>
            <value>classpath:/jdbc.properties</value>
        </list>
    </property>
</bean>


<bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource" destroy- method="close">
<property name="driverClassName" value="${db.driverClassName}" />
<property name="url" value="${db.url}"/>
<property name="username" value="${db.username}"/>
<property name="password" value="${db.password}"/>
</bean>

<bean id="jdbcTemplate" class="org.springframework.jdbc.core.JdbcTemplate">
    <property name="dataSource" ref="dataSource"/>
</bean>
</beans>

Я также пытался использовать тег context: property-placeholder, но он, похоже, не имеет никакого эффекта. Указанные выше файлы свойств также успешно развернуты в каталоге WEB-INF / classes.

По какой-то причине контейнер пружины может загружать файлы свойств (проверяется с помощью неверного файла свойств и вызывает исключение FNF), но не может заменить заполнители свойств их значениями.

Я использую Tomcat 7 WS с CATALINA.BASE, указывающей на мою среду выполнения. Кто-нибудь сталкивался с этой проблемой раньше? Любые решения?

Ответы [ 2 ]

1 голос
/ 27 февраля 2012

Уберите начальную косую черту из значений:

        <value>classpath:activemq.properties</value>
        <value>classpath:jdbc.properties</value>
0 голосов
/ 12 октября 2012

Попробуйте следующую конфигурацию.

<bean class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
    <property name="locations">
        <list>
            <value>classpath:activemq.properties</value>
            <value>classpath:jdbc.properties</value>
        </list>
    </property>
</bean>

Возможно, проблема в том, что вы даже назвали bean-компонент PropertyPlaceholderConfigurer.Большинство внутренних компонентов Spring не имеют идентификатора, так как среда настроена на поиск определенных имен компонентов, и часто именем компонента по умолчанию является автоматически сгенерированное имя, основанное на типе объекта.

...