Рассмотрим приложение на основе веб с пружиной 4. пружинные профили фасоли определяется в web.xml, как:Получить Весна имя профиля с пружиной EL
<context-param>
<param-name>spring.profiles.active</param-name>
<param-value>prod,edb,cas</param-value>
</context-param>
Теперь рассмотрим компонент определяется в весенне-applicaiton контекста .xml в
<util:properties id="myPolicy"
location=
"classpath:/configs/${ACCESS-ACTIVE-PROFILE-SECOND-ITEM}/my-policy.properties" />
возможно ли, что я могу получить доступ к списку активных профилей и выберите второй (в моем примере EDB). Таким образом, я могу динамически загружать ресурсы при изменении активного профиля.
Это может помочь! Я мог бы получить активный профиль, когда веб-приложение начинается с кодом ниже:
public void contextInitialized(ServletContextEvent event){
ApplicationContext applicationContext = WebApplicationContextUtils
.getWebApplicationContext(event.getServletContext());
String activeProfiles[] = applicationContext.getEnvironment().getActiveProfiles();
system.out.print(activeProfiles[1])
}
Отличный !! Ну, я подумал, что я могу использовать только placeholder в XML. Как упоминалось в http://www.javacodegeeks.com/2013/01/spring-property-placeholder-configurer-a-few-not-so-obvious-options.html в Но вы показали, что я могу легко назвать springEL в мой xml-файл. Можете ли вы показать мне ссылку?! –
'$ {...}' в весенней конфигурации XML - это заполнители свойств, '# {...}' - выражения SpEL. См. [Справочное руководство по весне] (http://docs.spring.io/spring-framework/docs/current/spring-framework-reference/html/expressions.html#expressions-beandef). Эти выражения оцениваются один раз, при времени инициализации контекста. Другие проекты, такие как [Spring Integration] (http://projects.spring.io/spring-integration/), используют выражения SpEL во время выполнения, где выражение оценивается против текущего сообщения. Важно понимать различия. –
Да, это упоминалось там: ** Выражения SpEL могут использоваться с метаданными конфигурации _XML_ или аннотацией для определения BeanDefinitions. В обоих случаях синтаксис для определения выражения имеет вид # {<строка выражения>} ** –