规则引擎-Aviator 表达式校验是否成立

在这里插入图片描述

介绍

Aviator是一个轻量级、高性能的Java表达式执行引擎,它动态地将表达式编译成字节码并运行。

特性

  1. 支持绝大多数运算操作符,包括算术操作符、关系运算符、逻辑操作符、位运算符、正则匹配操作符(=~)、三元表达式(?:)
  2. 支持操作符优先级和括号强制设定优先级
  3. 逻辑运算符支持短路运算。
  4. 支持丰富类型,例如nil、整数和浮点数、字符串、正则表达式、日期、变量等,支持自动类型转换。
  5. 内置一套强大的常用函数库
  6. 可自定义函数,易于扩展
  7. 可重载操作符
  8. 支持大数运算(BigInteger)和高精度运算(BigDecimal)
  9. 性能优秀

使用

maven引入

  <dependency>
      <groupId>com.googlecode.aviator</groupId>
      <artifactId>aviator</artifactId>
      <version>{version}</version>
  </dependency>

demo举例:判断以下条件是否成立
一个19岁叫张三的人 或者 一个叫李四的女生

导包:

import com.googlecode.aviator.AviatorEvaluator;
import com.googlecode.aviator.AviatorEvaluatorInstance;
import com.googlecode.aviator.Expression;
    public static void main(String[] args) {
        AviatorEvaluatorInstance engine = AviatorEvaluator.getInstance();
        String expression = "(name=='张三'&&age>=19)||(name=='李四'&&sex=='女')";

        checkExpression(expression);
        Expression compile = engine.compile(expression);
        Map<String, Object> env = new HashMap<>();
        env.put("name", "李四");
        env.put("age", 19);
        env.put("sex", "女");
        env.put("id", 1);
        final Object result = compile.execute(env);
        System.out.println(result);
    }


/**
     * 表达式校验
     *
     * @param expression 表达式
     */
    public static void checkExpression(String expression) {
        // 事件表达式校验
        AviatorEvaluatorInstance engine = AviatorEvaluator.getInstance();
        try {
            engine.validate(expression);
        } catch (Exception e) {
            throw new BaseException(Codes.PARAMETER_MISS, "表达式错误!");
        }
    }

执行结果:
在这里插入图片描述

更多文献支持

github官方:https://github.com/cmlanche/aviator
使用文档:https://www.yuque.com/boyan-avfmj/aviatorscript/cpow90

就先说到这 \color{#008B8B}{ 就先说到这} 就先说到这
在下 A p o l l o \color{#008B8B}{在下Apollo} 在下Apollo
一个爱分享 J a v a 、生活的小人物, \color{#008B8B}{一个爱分享Java、生活的小人物,} 一个爱分享Java、生活的小人物,
咱们来日方长,有缘江湖再见,告辞! \color{#008B8B}{咱们来日方长,有缘江湖再见,告辞!} 咱们来日方长,有缘江湖再见,告辞!

在这里插入图片描述

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值