Как сослаться на переменную $ {ENV} в bean-компоненте propertyConfigurer?

1

Я пытаюсь изменить этот пример для своих целей.

Я хочу загрузить свойства из файла, специфичного для сервера, используя что-то вроде этого:

<beans:bean id="propertyConfigurer"
    class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
    <beans:property name="locations">
        <beans:list>
            <beans:value>${ENV_JDBC_CONFIG}</beans:value>
        </beans:list>
    </beans:property>
</beans:bean>

Где ENV_JDBC_CONFIG - переменная enrivonment, указывающая путь к файлу свойств.

Это не с

'java.io.FileNotFoundException: Could not open ServletContext resource [/${ENV_JDBC_CONFIG}]'

Как я могу выполнить то, что я пытаюсь сделать здесь?

  • 1
    Вы должны добавить протокол файла перед полным путем к файлу, чтобы найти resource.for, например, если вы ссылаетесь на D: /MyProject/Db.properties, вы должны записать его как file: /// D: /MyProject/Db.properties, так, как вы также следует упомянуть <property name = "searchSystemEnvironment" value = "true"> </ property>, если требуется выполнить поиск в свойствах системы. Это приложение будет развернуто на сервере приложений? проверьте журналы, как это: Загрузка файла свойств из URL [file: / D: /MyProject/Db.properties]. Я пробовал это в glassfish 4.1, и он работает. Я добавил ENV_JDBC_CONFIG в свойствах системы сервера.
  • 0
    Имеет ли значение использование <beans:value>${env.ENV_JDBC_CONFIG}</beans:value> ?
Теги:
spring
production-environment
environment-variables

2 ответа

0

Spring генерирует ошибочное сообщение об ошибке, если переменная, указанная в ${}, не определена.

В этом случае он сказал мне FileNotFound, когда на самом деле переменная не была определена (с этим точным написанием, во всяком случае).

Исправлено было добавить -DENV_JDBC_CONFIG=file: /blah/blah/blah в /etc/defaults/tomcat7

0

Используйте свойство systemPropertiesMode конфигуратора для использования свойств System.
проверьте эту статью, она подскажет вам советы по управлению внешними свойствами.

Если вы хотите использовать переменную env внутри другого определения bean-компонента, вы можете использовать его как

<bean id="yourBean" class="com.company.YourBean"> <property name="environment" value="#{ systemProperties['env.var1'] }"/> <!-- other properties goes here....--> </bean>

Ещё вопросы

Сообщество Overcoder
Наверх
Меню