簡體   English   中英

春天如何在web.xml中使用環境變量?

[英]How to use environment variables in web.xml in spring?

我希望能夠在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>

這個問題與我的相似,最受支持的答案聲稱:

如果您使用的是Spring,則可以創建一個bean,然后在Spring XML配置文件中直接使用envvars或sysprops。

但是,我不知道該怎么做。 我添加了這個bean:

<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訪問該變量。 我應該如何定義該bean,以及如何在web.xml中使用其值?

如果您願意放棄使用XML配置而轉而使用Java配置,則可以很容易地在那里引用環境變量。 只需在配置類中使用@Autowire Environment,那么您可以執行類似的操作

@Autowired
Environment environment;

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

然后只需調用您的bean就可以了。 這假定該屬性在您的環境中存在,或者您已在運行時使用-DSERVER_ENVIRONMENT傳遞了該屬性。

或者,您可以僅使用Spring的@Profile批注,並使用該批注使您的日志環境依賴(也有一些教程)。

順便說一句,Spring Boot使此過程更加容易。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM