JEXL是一个库,旨在促进在用Java编写的应用程序和框架中实现动态和脚本功能。
该库提供了一个占用空间小的API - 核心功能适合3个类和10个方法 - 可以在各种条件下使用:

  • 脚本功能:

    • 您的应用程序允许(高级)用户评估或定义一些简单的表达式,如计算公式。
  • 模块或组件配置:
    • 您的应用程序具有最终用户模块使用的配置文件(最终由设计模块生成),这些文件将受益于变量和表达式。
    • 如果使用IOC会很方便,但整体复杂性不需要(或不能依赖)一个完整的库(Spring,Guice ......)。
  • 接口和实现的松散耦合或duck-typing:
    • 您有可选的类,您的代码不能将其视为编译依赖项。
    • 您必须集成并调用“遗留”代码或使用您不希望强烈依赖的组件。
  • 简单的模板功能:
    • 您的应用程序具有基本模板要求,而JSP或Velocity可能会过度或过于不便于部署。

Example:

计算表达式时,JEXL合并的 JexlExpression 或 JexlScript 与 JexlContext。使用JexlEngine #createExpression()创建表达式 ,传递包含有效JEXL语法的String。可以通过实例化MapContext来创建简单的 JexlContext ; 可以通过其构造函数选择提供内部包装的变量映射。以下示例采用名为foo的变量,并在属性innerFoo上调用bar()方法:

public class Example {public static void main(String[] args) {// Create or retrieve an engineJexlEngine jexl = new JexlBuilder().create();// Create an expressionString jexlExp = "foo.innerFoo.bar()";JexlExpression e = jexl.createExpression( jexlExp );// Create a context and add dataJexlContext jc = new MapContext();jc.set("foo", new Foo() );// Now evaluate the expression, getting the resultObject o = e.evaluate(jc);}
}public class Foo {public Foo getInnerFoo(){return new Foo();}public String bar(){return "bar";}
}Apache Maven:<dependency><groupId>org.apache.commons</groupId><artifactId>commons-jexl3</artifactId><version>3.1</version></dependency>

转载于:https://www.cnblogs.com/Jmmm/p/10610309.html

Jexl表达式引擎(1)相关推荐

  1. Jexl表达式引擎-根据字符串动态执行JAVA

    Table of Contents generated with DocToc 一.使用场景 二.市面上表达式引擎比较 2.1 Aviator 2.2 Jexl 一.使用场景 在做某些项目的时候,有时 ...

  2. Jexl表达式引擎(2)

    JEXL是一个旨在促进应用程序和框架中动态和脚本功能实现的库. Example: 在最简单的形式中,JEXL 在评估表达式时将JexlExpression 与 JexlContext 合并.使用Jex ...

  3. 流行的表达式引擎简单分析对比

    序        最近来了个能耗监测的需求,也就是对设备上报数据做一些业务的计算后阈值预警风控类的.对需求进行抽丝剥茧的拆解后,发现除去业务,最难的点也就是阈值比较了,到此有经验的码农很容易就想到了表 ...

  4. 牛逼,Java中表达式引擎工具就用它!建议收藏,一定用的到!!

    最近在负责一个和定价有关的系统,要做分层的价格决策.在决策过程中有两个诉求: 1.需要根据一定的表达式公式,进行分层决策.如订单金额大于1000元时,给10块钱红包,介于100和1000之间的给5元红 ...

  5. 【java表达式引擎】一、汇总目前开源的公式计算开源库

    java表达式引擎 前言 一.Fin-Expr 二.Expr4J 三.exp4j 四.Aviator VIATOR--轻量级JAVA表达式求值引擎 五. BeanShell 六.脚本语言 Ognl.M ...

  6. antlr表达式引擎

    初次在项目中使用antlr,刚做了第一版,功能很简单(参不多正则都能做╮(╯▽╰)╭) 用antlr做表达式引擎,分析表达式变量和函数 举例:表达式为[a]+[b]>[c]*([d]+[e])  ...

  7. 最简单却又极具扩展性的Java表达式引擎,自创编程语言必备

    这个表达式引擎只有短短的100多行,却能实现包括加减乘除.括号优先级在内的运算,可以在"处理表达式"函数中自行扩展想要处理的算法.这里面算法的难点主要在于如何实现在多级括号存在的情 ...

  8. 表达式引擎在转转平台的实践

    一.业务背景介绍 笔者负责了转转APP后端研发工作,主要的模块有首页.列表.详情页.个人中心等.在负责的详情页模块中,有这样的一个场景,APP打开不同商品的时候,会根据商品所属的业务,跳转到对应业务所 ...

  9. 本周推荐 | 表达式引擎的组合子实现方案

    推荐语:本文清晰而详细地介绍了如何使用 Parser 组合子方案,结合 Monad 通过合理的分层.抽象和组合,在性能达标的情况下实现消息场景中函数式的表达式解析.非常具有实践意义,推荐阅读学习! - ...

最新文章

  1. JavaScript Array相关方法
  2. Android视图绘制流程完全解析,带你一步步深入了解View(二)
  3. 《大话数据结构》第9章 排序 9.4 简单选择排序
  4. 基于matlab 求多边费马点,POJ2420(求多边形费马点) | 学步园
  5. 网易超分黑科技来了!全新移动端视频体验时代来临
  6. 如何创建最简单的 ABAP 数据库表,以及编码从数据库表中读取数据 (上)
  7. JMetro 5.2版发布
  8. 前端学习(1081):构造函数和原型概述
  9. Python学习相关资料
  10. EXCEL 自定义格式(一)
  11. 阿发你好java_191122_01 纯前端JS实现的文字验证码
  12. Android自己写的三款实用开关控件
  13. 参加计算机培训典型材料,计算机应用专业典型学员事迹材料
  14. Mac如何打开企业微信内置浏览器控制台
  15. 干货分享丨精心整理了份Python知识点高清速查表!太受用了!
  16. 亲测10月最新影视流量主小程序源码+卡密系统
  17. 卸载landesk的方法
  18. 考研OR工作----计算机操作系统简答题及疑难知识点总结(第一章 操作系统引论)
  19. HTML5中利用JavaScript实现拖放(来回)的案例
  20. Unity TimeLine丨A1.创建TimeLine、Animation Track,Extrapolation属性讲解

热门文章

  1. c枚举类型enum例题_c语言之枚举类型(enum)
  2. 定时任务实现原理详解
  3. python中如何放大字体
  4. 国产网页在线编辑器kindeditor的使用
  5. 燃烧的远征java(一)-开发环境:JDK1.6+tomcat5.5
  6. 苹果开发者账号添加设备
  7. 详解pytorch动态量化
  8. 体育技术机器学习金钱和灵感的圣杯
  9. Vpp源码解读--workhandoff处理
  10. [php fqm说明]以及nginx和apache的一些说明