程序问答   发布时间:2022-06-02  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了Spring Boot SpEL ConditionalOnExpression检查多个属性大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。

如何解决Spring Boot SpEL ConditionalOnExpression检查多个属性?

开发过程中遇到Spring Boot SpEL ConditionalOnExpression检查多个属性的问题如何解决?下面主要结合日常开发的经验,给出你关于Spring Boot SpEL ConditionalOnExpression检查多个属性的解决方法建议,希望对你解决Spring Boot SpEL ConditionalOnExpression检查多个属性有所启发或帮助;

注释@ConditionalOnProperty和注释@ConditionalOnExpression都没有java.lang.Annotation.Repeatable注释,因此您将不能仅添加多个注释来检查多个属性。

以下语法已经过测试并可以工作:

@ConditionalOnExpression("${propertIEs.first.property.enable:truE} && ${propertIEs.second.property.startServer:falsE}")

请注意以下几点:

  • 您需要使用冒号来表示表达式语言语句中属性的默认值
  • 每个属性都在单独的表达语言块$ {}中
  • &&运算符在SpEL块之外使用

它允许具有不同值的多个属性,并且可以扩展到多个属性。

如果要检查两个以上的值并仍保持可读性,则可以在要评估的不同条件之间使用串联运算符:

@ConditionalOnExpression("${propertIEs.first.property.enable:truE} " +
        "&& ${propertIEs.second.property.enable:truE} " +
        "&& ${propertIEs.third.property.enable:truE}")

缺点是您不能像使用批注时那样使用matchIfMissing参数,@ConditionalOnProperty因此必须确保所有配置文件/环境的属性都存在于.propertIEsYAML 文件中,或者仅依赖默认值值

解决方法

题:@H_607_50@

如何使用Spring Expression Language检查2个布尔属性是否正确?

例如,检查单个属性为true将使用以下语法:

例@H_607_50@

@ConditionalOnExpression("${property.from.properties.filE}")

检查的语法是property1 == true && property2 == false什么?这些属性可能具有不同的值。

相似问题的答案:如何在使用@ConditionalOnProperty或@ConditionalOnExpression时检查两个条件,将两个字符串连接在一起并执行如下检查:

串联解决方案@H_607_50@

@ConditionalOnExpression("'${Com.property1}${Com.property2}'=='value1value2'")

对于阅读该代码的人来说,这种语法似乎令人困惑,而且似乎是一个棘手的解决方案。在某极端情况下,解决方案也会失败。我想找到一种无需连接值即可检查两个单独属性的正确方法。

注意:@H_607_50@ 还要清楚一点,答案并不是您可以从我所看到的内容中轻松找到的答案。 看来这将是一个非常简单的答案,但事实证明它相当难以捉摸。

大佬总结

以上是大佬教程为你收集整理的Spring Boot SpEL ConditionalOnExpression检查多个属性全部内容,希望文章能够帮你解决Spring Boot SpEL ConditionalOnExpression检查多个属性所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。