注释
@ConditionalOnProperty和注释
@ConditionalOnexpression都没有
java.lang.annotation.Repeatable注释,因此您将不能仅添加多个注释来检查多个属性。
以下语法已经过测试并可以工作:
两种属性的解决方案
@ConditionalOnexpression("${properties.first.property.enable:true} && ${properties.second.property.startServer:false}")请注意以下几点:
- 您需要使用冒号来表示表达式语言语句中属性的默认值
- 每个属性都在单独的表达语言块$ {}中
- &&运算符在SpEL块之外使用
它允许具有不同值的多个属性,并且可以扩展到多个属性。
如果要检查两个以上的值并仍保持可读性,则可以在要评估的不同条件之间使用串联运算符:
超过2个属性的解决方案
@ConditionalOnexpression("${properties.first.property.enable:true} " + "&& ${properties.second.property.enable:true} " + "&& ${properties.third.property.enable:true}")缺点是您不能像使用批注时那样使用matchIfMissing参数,
@ConditionalOnProperty因此必须确保所有配置文件/环境的属性都存在于
.properties 或 YAML 文件中,或者仅依赖默认值值



