如何从环境变量添加活动弹簧轮廓?

时间:2016-11-16 16:41:19

标签: spring spring-boot spring-profiles

到目前为止,我在~/.bash_profile

中设置了以下环境变量
export SPRING_PROFILES_ACTIVE=local

这设置了我的活跃弹簧配置文件。但现在,我想本地个人资料添加到application.properties中定义的其他个人资料中,而不是替换

Spring Boot documentation中,有一个关于添加活动配置文件的部分,但我没有看到从环境变量添加活动配置文件。

我尝试设置SPRING_PROFILES_INCLUDE环境变量,但这没有效果。

怎么做?

P.S。:我正在使用Spring Boot 1.4.2。

4 个答案:

答案 0 :(得分:8)

使用默认添加个人资料

您可以使用表达式在application.properties文件中,在定义的配置文件旁边引入您自己的环境变量。例如,如果您当前的文件如下所示:

spring.profiles.active=profile1,profile2

使用自定义环境变量,它将变为:

spring.profiles.active=profile1,profile2,${ADDITIONAL_APP_PROFILES:local}

其中ADDITIONAL_APP_PROFILES是您设置的环境变量的名称,而不是SPRING_PROFILES_ACTIVE

当在当前环境中未设置变量时,将使用值local。在这种情况下,将激活名为local的配置文件。如果您未设置默认值且环境变量不存在,则整个表达式将用作活动配置文件的名称。

没有默认添加个人资料

如果您想避免激活默认配置文件,可以在变量表达式之前删除占位符值和逗号:

spring.profiles.active=profile1,profile2${ADDITIONAL_APP_PROFILES}

但在这种情况下,在当前环境中设置的变量必须以逗号开头:

export ADDITIONAL_APP_PROFILES=,local

答案 1 :(得分:2)

您链接到的文档中的下一句话:

  

有时,将特定于配置文件的属性添加到活动配置文件而不是替换它们是有用的。 spring.profiles.include属性可用于无条件添加活动配置文件。

因此,您可以使用命令行参数启动应用程序:

-Dspring.profiles.include=${SPRING_PROFILES_INCLUDE}

答案 2 :(得分:0)

这是从系统env或jvm arg 添加以编程方式添加的活动配置文件的示例。

@Configuration
public class ApplicationInitializer implements WebApplicationInitializer, ApplicationContextInitializer<ConfigurableWebApplicationContext> {

    @Override
    public void onStartup(ServletContext servletContext) throws ServletException {
        servletContext.setInitParameter("contextInitializerClasses", this.getClass().getCanonicalName());
    }

    @Override
    public void initialize(ConfigurableWebApplicationContext applicationContext) {
        ConfigurableEnvironment environment = applicationContext.getEnvironment();
        environment.addActiveProfile(System.getProperty("myProperty"));
        environment.addActiveProfile(System.getEnv("myProperty"));
    }
}

答案 3 :(得分:-1)

为了支持bash环境,可用值为 SPRING_PROFILES_ACTIVE SPRING_PROFILES_DEFAULT

不是,SPRING_PROFILES_INCLUDE

您可能必须采用命令行方式-Dspring.profiles.include或使用ConfigurableEnvironment进行语法练习

http://docs.spring.io/spring/docs/current/javadoc-api/org/springframework/core/env/AbstractEnvironment.html#ACTIVE_PROFILES_PROPERTY_NAME