propertyPlaceHolderConfigurer и переменная окружения - PullRequest
1 голос
/ 18 января 2012

Я пытаюсь загрузить файл свойств из переменной среды, поэтому я попробовал вот что:

<bean id="propertyPlaceholderConfigurer"
        class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
        <property name="locations">
            <list>

                <value>classpath:messages/application.properties</value>
                <value>file:${My_ENV_VAR}/*.properties</value>

            </list>
        </property>

        <property name="ignoreResourceNotFound" value="true" />
        <property name="searchSystemEnvironment" value="true" />
        <property name="systemPropertiesModeName" value="SYSTEM_PROPERTIES_MODE_OVERRIDE" />

    </bean>

У меня есть новая переменная среды с именем My_ENV_VAR=C:\Program Files\My Folder\props.properties, но при остановке и запуске приложения значениепеременной не задано, есть идеи почему?

ОБНОВЛЕНИЕ : Требование

Я хочу прочитать свойства спящего режима (URL, имя пользователя, пароль) в applicationContext.xml из файла внешнего свойства в файловой системе, путь которого хранится в переменной среды.

Ответы [ 2 ]

8 голосов
/ 18 января 2012

Вы пытаетесь использовать PropertyPlaceholderConfigurer для создания PropertyPlaceholderConfigurer.Это проблема курицы / яйца, она не может работать!

Попробуйте вместо этого использовать язык выражений (см. этот раздел ), но в вашем случае это сложно, потому что вы хотите смешать статические идинамический контент.Вероятно, что-то вроде этого будет работать:

<property name="locations"
  value="classpath:messages/application.properties,
  #{ T(java.lang.System).getenv('MY_ENV_VAR')}" />
  <!-- changed method name, it's getenv(), not getEnv() -->
1 голос
/ 20 августа 2013

Yo следует использовать следующим образом:

Сначала объявите bean-компонент Spring

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

Теперь в каталоге WEB-INF/classes создайте файл config.properties и поместите это:

jboss.variable=${jboss.modules.dir}

Примечание. При развертывании JBoss 6 EAP в журнале отображается сообщение:

jboss.modules.dir = C:\Java\jee-container\jboss-eap-6.1\modules

и используется переменная в файле контекста приложения:

<bean id="nameOfBean"
    class="com.moeandjava.pusku.MySpringBean">
    <property name="path" value="${jboss.variable}" />
</bean>

Извините за мойплохой английский

...