是否可以将application.properties
中的spring.profiles.active
设置为包含其他变量的值?显然,我无法让它发挥作用。
这是我想要的:
one=${APP_ONE:foo}
two=${APP_TWO:bar}
spring.profiles.active=${one},${two}
在这里,环境变量APP_ONE
和APP_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)