Использование пружины 3.2.5. У меня есть веб-проект с двумя контекстами приложения (один из родителей другого).Весенняя среда не может разрешать заполнители
Я настроил в XML, заполнитель configurer так:
<context:property-placeholder location="WEB-INF/properties/*.properties, classpath:local.config.properties, file:${global.config.file}"
ignore-unresolvable="true"
ignore-resource-not-found="false"/>
переменный «global.config.file» представляет собой путь к файлу, указанному в аргументах JVM, принятых для запуска Tomcat.
В моем коде, я могу успешно вводить значения из этих файлов, как это:
@Value("${blabla}")
private String blabla;
Однако, когда я пытаюсь разрешить заполнителей программно, через объект окружающей среды весны, заполнители не заменяются реальными значениями:
@Inject
Environment env;
// ...
public void test() {
String blabla = env.resolvePlaceholders("${blabla}");
}
The BlaBla переменные будут содержать это нерешенный значение: "$ {BlaBla}" Также делает:
env.getProperty("blabla");
возвращается null. Обратите внимание, что я использую контекстную местоположение схемы выше 3.0:
http://www.springframework.org/schema/context/spring-context-3.2.xsd
Может кто-то помочь мне понять, что я не хватает? Или любая подсказка о том, как отлаживать дальше?
Там нет ничего, чтобы отладить, как она работает, как задумано. Зарегистрированный 'PropertySourcesPlaceholderConfigurer' использует среду для поиска, которую он не может найти из загруженных файлов. Он не добавляет загруженные свойства в «Среда», если вы хотите, чтобы вам нужен класс '@ Configuration', и добавьте аннотацию' @ PropertySource', поскольку они добавлены в «Среда». –
Все, что вы хотите, это возможность получить ресурс программно? Если это так, проверьте [this] (http://stackoverflow.com/questions/13265545/using-reloadableresourcebundlemessagesource-in-annotations-injection). Я использую его таким образом в настоящее время и работает для файлов свойств. – dambros
Да, я хочу разрешить строковые выражения с использованием заполнителей во время выполнения. M. Deinum: Означает ли это, что если я заменил тег пространства имен ручным определением PropertySources, он будет работать? Мне тоже нужно работать с весенними конфигурационными файлами. – baraber