【问题标题】:Multiple @Profile values with NOT operator带有 NOT 运算符的多个 @Profile 值
【发布时间】: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”是如何工作的。我从来没有找到这种场景的用例。

标签: java spring


【解决方案1】:

@JaronF 注释在大多数情况下是正确的,它主要说明 Profile 如何与 NOT 运算符一起使用,

但如果你定义了multiple active profiles,那么它将是相关的

如果您希望仅在 Profile dev 处于活动状态并且 dev 和 prod 都处于活动状态时才注册 Bean

【讨论】:

    猜你喜欢
    • 2021-04-09
    • 2012-07-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-01-30
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多