牛逼的解析器expression

86 阅读2分钟

开启掘金成长之旅!这是我参与「掘金日新计划 · 12 月更文挑战」的第21天,点击查看活动详情

前言

  • 在平时开发中有的时候我们会遇到各种无力的需求,我们开发就是按照产品需求进行逻辑开发,但是有的时候却遇到需要懂动态的执行某个表达式降结果呈现出来,这种虽然高大上呢但是对于开发同学来说的确不好实现。

  • 好在如果你是spring 用户,那么你就不需要担心这个问题了。因为spirng 已经帮我们封装好了独赢的方法。springexpression 这个就是表达式解析器,包括单不限于在网管中都会使用相关的技术。

具体做啥

  • SpEL是单独模块,只依赖于core模块,不依赖于其他模块,可以单独使用。能与Spring功能完美整合,如能用来配置Bean定义。
  • 表达式语言给静态Java语言增加了动态功能。
  • 表达式语言一般是用最简单的形式完成最主要的工作,减少我们的工作量。

表达式

  • 通过他你能够实现加减乘除运算,浴火运算,还有我们经常在流程中设计的逻辑运算。这些统统能够帮你实现。

  • 算术运算符:+,-,*,/,%,^(加号还可以用作字符串连接)

  • 比较运算符:< , > , == , >= , <= , !=, lt , gt , eg , le , ne

  • 逻辑运算符:and , or , not , &&, || ,!

  • if-else 运算符: 三目运算及Elivis运算表达式

  • 正则表达式:

  • 括号优先级表达式: 使用“(表达式)”构造,括号里的具有高优先级

同根同宗

  • ExpressionParser和StandardEvaluationContext便是Spring Expression的大杀器,其中context字面意思理解下就差不多了,上下文,同样的规则在不一样的上下文中解析出来的结果自然是不一样的,context中我们放置了一个变量o,即订单,如果你的上下文中有多个变量,尽管往里面扔,解析器parser是可以定义为static,每次实例化是没必要的,这里是为了大家好理解直接定义成了局部变量。