背景
第一次接触这个BeanShell是在JMeter中的BeanShell脚本配置。 当时,我并没有把它当回事。 最近接触到一个网关项目。 该网关项目实现了异构系统之间的通信转换和消息转换。 处理,完全基于GUI页面或XML文件的最大化配置java基础代码,以及消息转换过程中需要特别指定的字段处理的JAVA代码配置,都可以在XML文件中进行配置。 一般外观如下:
其中,CDATA部分显然是一段java代码。 这个实现方法引起了我的兴趣。 寻找底层实现后,BeanShell 再次映入眼帘。
简单的查找文档后,整理出以下简单的用法作为记录,基本够用了。
BeanShell 的基本用法
1.创建项目并添加maven依赖
org.apache-extras.beanshell
bsh
2.0b6
2.实例1,构建main方法,添加如下代码
// 创建interpreter构造方法对象
Interpreter i = new Interpreter();
// 设置变量
i.set("foo", 5);
i.set("date", new Date());
// 获取变量
Date date = (Date) i.get("date");
// 触发一个运算
i.eval("bar = foo*10");
System.out.println(i.get("bar"));
923ffdea3b7763fcfe86abab523dbfdd
其中:Interpreter是BeanShell的主要入口
3.如果上面的例子不能解决实际问题,下面一个可以让人想象
// 创建interpreter构造方法对象
Interpreter i = new Interpreter();
// 设置变量,这个地方既可以是数字也可以是字符串,没有严格的类型限制
i.set("a", 5);
i.set("b", 6);
Object ret = i.source("beanshell/source.bsh");
System.out.println(ret);
c84bc7b0ff7cbc4c33b44e0911d9911f
source.bsh文件内容如下:
add( a, b ) {
return a + b;
}
foo = add(a, b);
return foo ;
System.out最后的结果是11,如果设置变量的位置是字符串java基础代码,结果就是两个字符串的拼接。
81ed7160a8d9687a111e149336321566
这个文件的内容可以是一个java文件,可以通过import引入需要的处理类,完成更多的功能。
应用场景
可设想的应用场景:
声明:本站所有文章,如无特殊说明或标注,均为本站原创发布。任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站、书籍等各类媒体平台。如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。