2016-09-23 114 views
2

是否有可能将spring.profiles.activeapplication.properties设置为包含其他变量的值?显然,我无法得到这个工作。将spring.profiles.active设置为application.properties中变量的值

这里是我想要的东西:

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

这里,也是环境变量APP_ONEAPP_TWO应加以解释和spring.profiles.active结束。

然后,我希望能够在标记中参考applicationContext.xml

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

回答

1

这是可能的。但是,您不能在弹簧检查的属性源顺序的相同(或较低优先级)中定义变量spring.profiles.active。订单提到here

就你而言,你已经尝试在相同的属性源内“插入”变量。 您可以为其他属性执行此操作,但不适用于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) 
方法