Не могу заставить PropertyPlaceholderConfigurer работать так, как я хочу - PullRequest
1 голос
/ 29 марта 2011

Я пытаюсь использовать PropertyPlaceholderConfigurer для чтения конфигурации моего приложения.По сути, в WEB-INF/config/config.properties есть первый файл конфигурации, в котором находится файловая система другого файла свойств (чтобы он не разрушался при развертывании или обновлении приложения).Я пытаюсь настроить этот параметр в servlet-context.xml, но работает только первый:

<bean id="propertyConfigurerInternal"
    class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
    <property name="location">
        <value>/WEB-INF/config/config.properties</value>
    </property>
</bean>


<bean id="propertyConfigurerExternal"
    class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer"
    depends-on="propertyConfigurerInternal">
    <property name="location">
        <value>file:${baseDataFolder}/jaccise.conf</value>
    </property>
</bean>

Первый (propertyConfigurerInternal) создан без проблем, но второй выходит из строя следующим образом.:

org.springframework.beans.factory.BeanInitializationException: не удалось загрузить свойства;вложенное исключение: java.io.FileNotFoundException: ${baseDataFolder}\jaccise.conf (Невозможно выполнить проверку). <- Означает «Не удается найти файл по указанному пути» </p>

, например, выражение EL не работает ... Какмне решить это?

Ответы [ 2 ]

0 голосов
/ 02 марта 2012

depends-on="propertyConfigurerInternal" означает, что propertyConfigurerInternal инициализируется до propertyConfigurerExternal.

И ${baseDataFolder} должны быть включены в файлы свойств propertyConfigurerInternal (в вашем случае: config.properties), в противном случаеэто не может быть проанализировано.

Итак, вы должны взглянуть на /WEB-INF/config/config.properties, чтобы увидеть, был ли ${baseDataFolder} установлен в файле.

0 голосов
/ 30 апреля 2011

Вы можете сделать это:

<bean id="propertyConfigurer" class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
    <property name="locations">
        <list>
            <value>/WEB-INF/config/config.properties</value>
            <value>file:${baseDataFolder}/jaccise.conf</value>
        </list>
    </property>
</bean>

Просто используйте единственный PlaceholderConfigurer и посмотрите, не является ли это причиной вашей проблемы. Я никогда не видел, чтобы два экземпляра создавались так, как вы пытаетесь, и я предполагаю, что это может быть проблематично.

Надеюсь, это поможет.

...