我在Spring Boot应用程序中有这个配置类。 v1.5.3.RELEASE
@Configuration
@Profile("dev && cub")
@PropertySource("file:///${user.home}/.cub/application-dev.properties")
public class CubDevelopmentConfig {
..
}
这个属性在我的application.properties
中定义spring.profiles.active=dev, cub
但未加载配置类
我也试过@Profile("{dev && cub}")
答案 0 :(得分:3)
使用注释的value()
方法的数组形式指定多个值
那是 :
@Profile({"dev", "cub"})
尽管如此,这种配置并不意味着" dev"和"幼仔"需要配置文件。
至少其中一个的存在验证了该条件。
要仅在两个配置文件都存在的情况下启用配置,Spring Boot目前还没有提供开箱即用的解决方案。
从Spring Core 5.1(Spring Boot 2.1或更高版本)开始,您最终可以在@Profile
中使用一些表达式。请注意,这不是EL而是有限的表达。
个人资料字符串可能包含简单的个人资料名称(例如" p1" ) 或者个人资料表达。配置文件表达式允许更多 要表达的复杂轮廓逻辑,例如" p1& P2" 即可。看到 Profiles.of(String ...),了解有关支持格式的详细信息。
根据javadoc,我们可以指定多个配置文件的存在作为条件:
@Profile("dev & cub")
现在可以更明确地表达一个或另一个档案的存在:
@Profile("dev | cub")
我们也可以依赖否定,例如:
@Profile("dev & !cub")
请注意,&
和|
不能在不使用括号的情况下混合在同一个表达式中。所以它应该用作:
@Profile("(dev & integ) | cub")
您可以检索有关Profile
表达式here的所有规则。
作为一般说明,请注意关于配置文件的联合作为激活规则,因为它可能是由于设计不良造成的,因为我们将过多的环境与#34;环境联系起来。