1

我有一个 bean,只有在属性为 false 或未定义时才应加载。如果我用以下方式注释它:

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

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

我尝试添加注释:

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

@ConditionalOnProperty不是可重复的注释。

我也尝试过使用@ConditionalOnExpression

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

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

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

4

1 回答 1

5

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

@ConditionalOnExpression("'${dlcm.module.auth.enable:false}' == 'false'")
于 2019-02-24T17:38:06.610 回答