使用application.properties中的变量将spring.profiles.active设置为值



是否可以将application.properties中的spring.profiles.active设置为包含其他变量的值?显然,我无法让它发挥作用。

这是我想要的:

one=${APP_ONE:foo}
two=${APP_TWO:bar}
spring.profiles.active=${one},${two}

在这里,环境变量APP_ONEAPP_TWO也应该被解释并最终在spring.profiles.active中结束。

然后我希望能够在<beans profile="one">标签中的applicationContext.xml中引用这一点。

对不起,如果我在这里不够清楚,但我不知道如何更准确。

这是可能的。但是,您不能为spring.profiles.active定义与spring检查的属性源顺序相同(或优先级较低(的变量。这里提到了订单。

在您的案例中,您已尝试在同一属性源中插入变量您可以对其他属性执行此操作,但不能对spring.profiles.active执行此操作,因为它可能首先被选中,以使spring能够决定需要检查哪些其他特定于配置文件的属性。

如果您将application.properties更改为

spring.profiles.active=${APP_ONE:foo},${APP_TWO:bar}

然后设置具有较高属性源顺序的APP_ONE、APP_TWO变量(例如命令行参数(。它应该按预期设置配置文件。

我不理解你问题的第二部分,但如果你想通过编程了解哪些概要文件是活动的,你可以简单地自动连接环境并调用相应的方法。

@Autowired
Environment env;

环境有类似的方法

String[] getActiveProfiles()
String[] getDefaultProfiles() //and 
boolean acceptsProfiles(String... profiles)

最新更新