如何仅在 属性 为 false 或未定义时加载 bean?

How to load a bean only if a property is false or not defined?

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

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

属性 myFeature1.enable 必须明确设置为 false。此 属性 在 @ConfigurationProperties annotated class, but this annotation seems to be treated too late in the application startup so the myFeature1.enable property has to be used as a string from the Environment.

中定义为具有错误默认值的布尔值

我尝试添加注释:

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

@ConditionalOnProperty 不是可重复的注释。

我也尝试过使用 @ConditionalOnExpression

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

但 属性 占位符似乎被空字符串以外的其他内容替换。

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

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

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