如何仅在 属性 为 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'")
我有一个 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'")