【问题标题】:How to use environment variables in web.xml in spring?spring 如何在 web.xml 中使用环境变量?
【发布时间】:2016-02-23 22:09:25
【问题描述】:

我希望能够在 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 的问题与我的问题相似,并且最受好评的答案声称:

如果你使用的是 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 中使用它的值?

【问题讨论】:

    标签: java spring spring-mvc


    【解决方案1】:

    如果您愿意放弃使用 XML 配置来支持 Java 配置,那么在此处引用环境变量非常容易。只需 @Autowire Environment 在您的配置类中,然后您就可以执行类似的操作

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

    然后只需调用你的 bean 就可以了。这假定该属性存在于您的环境中,或者您已在运行时使用 -DSERVER_ENVIRONMENT 将其传入。

    或者您可以只使用 Spring 的 @Profile 注释并使用它使您的日志环境依赖(也有几个教程)。

    顺便说一句,Spring Boot 使这个过程变得更加容易。

    【讨论】:

    • java 系统属性不是环境变量。
    猜你喜欢
    • 2010-11-27
    • 1970-01-01
    • 2016-06-26
    • 2021-09-29
    • 2015-07-07
    • 2021-11-09
    • 1970-01-01
    • 2021-02-09
    • 1970-01-01
    相关资源
    最近更新 更多