2016-02-23 7 views
0

Я хочу, чтобы иметь возможность ссылаться на переменные окружения в web.xml, что-то вдоль линий этого:Как использовать переменные окружения в web.xml весной?

<context-param> 
    <param-name>log4jConfigLocation</param-name> 
    <param-value>classpath:conf/log4j-${SERVER_ENVIRONMENT}.properties</param-value> 
</context-param> 
<listener> 
    <listener-class>org.springframework.web.util.Log4j2ConfigListener</listener-class> 
</listener> 
<param-value>classpath:conf/log4j-​${SERVER_ENVIRONMENT}​.properties</param-value> 

This вопрос похож на мой, и самый upvoted ответ утверждает, что:

Если вы используете Spring, вы можете создать компонент, а затем напрямую использовать envvars или sysprops в конфигурационных файлах Spring XML.

Однако я не понимаю, как это сделать. Я добавил этот компонент:

<context:property-placeholder /> 
<bean id="propertyConfigurer" class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer"> 
    <property name="serverEnvironment" value="${SERVER_ENVIRONMENT}"></property> 
    <property name="ignoreUnresolvablePlaceholders" value="true" /> 
</bean> 

Но я не знаю, если я делаю это правильно, и как получить доступ к этой переменной из web.xml. Как определить этот компонент и как его использовать в web.xml?

ответ

0

Если вы захотите отказаться от использования конфигурации XML в пользу конфигурации Java, довольно легко ссылаться на переменные окружения. Просто @Autowire среда в вашем классе конфигурации, то вы можете сделать что-то вроде

@Autowired 
Environment environment; 

@Bean 
public String getServerEnvironment(){ 
    return this.environment.getProperty("SERVER_ENVIRONMENT"); 
} 

Тогда просто называют свой боб, и вы сделали. Это предполагает, что свойство существует в вашей среде или вы передали его с помощью -DSERVER_ENVIRONMENT во время выполнения.

Или вы могли бы просто использовать аннотацию @Profile от Spring и сделать вашу среду журналов зависимой, используя это (несколько руководств по этому вопросу).

Кстати, Spring Boot делает этот процесс еще проще.

Смежные вопросы