我有一个bean,仅当属性为false或未定义时才应加载。如果我用以下注释:
@ConditionalOnProperty(prefix = "myFeature1", name = "enable", havingValue = "false")
属性myFeature1.enable
必须显式设置为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}' == ''")
但该属性占位符似乎被空字符串以外的其他内容代替。
所以我的问题是:仅当属性为false或未定义时,如何加载bean?
答案 0 :(得分:0)
解决方案是在属性占位符中使用带有默认值的@ConditionalOnExpression
批注:
@ConditionalOnExpression("'${dlcm.module.auth.enable:false}' == 'false'")