У меня есть Spring application-context.xml с PropertyPlaceholderConfigurer, чтобы получить значения свойств из файла .properties. Основные и тестовые исходные папки имеют отдельный файл .properties. Проблема в том, что мне нужно использовать переменные среды в файле .properties. Но когда я делаю это следующим образом:PropertyPlaceholderConfigurer и переменные окружения в файлах .properties
property.name=${env.SYSTEM_PROPERTY}
Я получаю следующее сообщение об ошибке:
org.springframework.beans.factory.BeanDefinitionStoreException: Invalid bean definition with name 'beanName' defined in class path resource [com/example/applicationContext.xml]: Could not resolve placeholder 'env.SYSTEM_PROPERTY'
в то время как заполнитель configurer определяется как
<bean class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
<property name="location" value="classpath:com/example/application.properties"/>
</bean>
Любые идеи, как сделать, property.name интерпретируется как переменная среды (а не как заполнитель)?
С уважением, Dmitriy.
Это очень хорошо. Однако одна из проблем заключается в том, что забывание определить переменную времени выполнения создает сложные ошибки времени выполнения, такие как файл config_xxx, который не найден, и подобные. Чтобы улучшить эту ситуацию, я регистрирую компонент, который реализует специальные пружинные интерфейсы, такие как: class EnvironmentReporter реализует PriorityOrdered, BeanFactoryPostProcessor, EnvironmentAware {...} environment.getProperty позволяет мне проверять ожидаемые свойства и отказываться до того, как любой другой компонент получит создано. – Federico