【发布时间】:2019-08-10 23:51:29
【问题描述】:
在@Profile注解文档中有这样一句话:
如果给定配置文件以 NOT 运算符 (!) 为前缀,则如果配置文件未激活,则注释组件将被注册 - 例如,给定 @Profile({"p1", "!p2"}),注册如果配置文件“p1”处于活动状态或配置文件“p2”未处于活动状态,则会发生。
在以下示例中,MyRepoImpl 将在 uat 配置文件处于活动状态时创建为 Spring bean:
@Repository
@Profile({"dev", "!prod"})
public class MyRepoImpl implements MyRepo {...}
在这种情况下,指定!prod(本例中为dev)以外的配置文件的原因是什么?
一旦prod 不活跃,就会创建bean。是不是有点多余的配置?
【问题讨论】:
-
我认为唯一的原因是为了说明。 1. 它说明了配置文件以这种方式使用时是“OR”而不是“AND”。 2. 它还说明了“NOT”是如何工作的。我从来没有找到这种场景的用例。