【问题标题】:How to load a bean only if a property is false or not defined?仅当属性为 false 或未定义时如何加载 bean?
【发布时间】:2019-02-24 17:35:55
【问题描述】:

我有一个 bean,只有当属性为 false 或未定义时才应该加载。如果我注释它:

@ConditionalOnProperty(prefix = "myFeature1", name = "enable", havingValue = "false")

属性myFeature1.enable 必须明确设置为false。此属性在 @ConfigurationProperties 带注释的类中定义为布尔值,默认值为 false,但此注释似乎在应用程序启动时处理得太晚,因此必须将 myFeature1.enable 属性用作来自 @987654322 的字符串@。

我尝试添加注释:

@ConditionalOnProperty(prefix = "dlcm.module.auth", name = "enable", matchIfMissing = true)

@ConditionalOnProperty 不是可重复的注解。

我也尝试过使用@ConditionalOnExpression

@ConditionalOnExpression("'${dlcm.module.auth.enable}' == 'false' or '${dlcm.module.auth.enable}' == ''")

但属性占位符似乎被空字符串以外的东西替换。

所以我的问题是:如何仅在属性为 false 或未定义时才加载 bean?

【问题讨论】:

    标签: java spring spring-boot spring-bean spring-properties


    【解决方案1】:

    解决方案是在属性占位符中使用带有默认值的@ConditionalOnExpression注解:

    @ConditionalOnExpression("'${dlcm.module.auth.enable:false}' == 'false'")
    

    【讨论】:

      猜你喜欢
      • 2016-11-17
      • 1970-01-01
      • 2019-02-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-07-18
      • 1970-01-01
      相关资源
      最近更新 更多