Java 具有NOT运算符的多个@Profile值

Java 具有NOT运算符的多个@Profile值,java,spring,Java,Spring,注释文档中有一条语句: 如果给定的配置文件以NOT运算符(!)作为前缀,则如果该配置文件未处于活动状态,则将注册带注释的组件-例如,给定@profile({“p1”,“!p2”}),如果配置文件“p1”处于活动状态或配置文件“p2”未处于活动状态,则将进行注册 在下面的示例中,uat配置文件处于活动状态时,MyRepoImpl将被创建为Springbean: @存储库 @配置文件({“dev”,“!prod”}) 公共类MyRepoImpl实现MyRepo{…} 在这种情况下,指定除以外的配置

注释文档中有一条语句:

如果给定的配置文件以NOT运算符(!)作为前缀,则如果该配置文件未处于活动状态,则将注册带注释的组件-例如,给定@profile({“p1”,“!p2”}),如果配置文件“p1”处于活动状态或配置文件“p2”未处于活动状态,则将进行注册

在下面的示例中,
uat
配置文件处于活动状态时,
MyRepoImpl
将被创建为Springbean:

@存储库
@配置文件({“dev”,“!prod”})
公共类MyRepoImpl实现MyRepo{…}
在这种情况下,指定除
以外的配置文件的原因是什么!prod
dev
在本例中)


一旦
prod
未激活,将创建bean。这不是一种过度不必要的配置吗?

@JaronF comment在大多数情况下都是正确的,它主要说明了配置文件如何与not操作符一起工作

但在你定义的情况下,它将是相关的


如果您只想在Profile dev活动时以及dev和prod都活动时注册Bean,那么我认为唯一的原因是为了说明。1.它说明了当以这种方式使用时,配置文件是“或”而不是“和”。2.它还说明了“不”是如何工作的。我从未找到过这种场景的用例。