依赖Jar包
<!-- JVM动态脚本语言Groovy -->
<dependency>
<groupId>org.codehaus.groovy</groupId>
<artifactId>groovy</artifactId>
<version>2.5.5</version>
</dependency>
<dependency>
<groupId>org.codehaus.groovy</groupId>
<artifactId>groovy-jsr223</artifactId>
<version>2.5.5</version>
</dependency>
用法实例:
public static void main(String[] args) {
long startDate = System.currentTimeMillis();
Binding binding = new Binding();
GroovyShell shell = new GroovyShell(binding);
binding.setVariable("name", "zhangsan");
Map<String, Object> resultMap = new HashMap<String, Object>();
resultMap.put("num1", 2);
resultMap.put("num2", 4);
binding.setVariable("resultMap", resultMap);
//执行定义方法
String str = (String)shell.evaluate("public String test(String name){return name + '123';};test(name);");
System.out.println("获取到的字符串结果:"+str);
//获取变量
Object str2 = shell.evaluate("resultMap.get('num1')");
System.out.println("获取到的字符串结果:"+str2);
//通过获取的变量进行计算
str2 = shell.evaluate("resultMap.get('num1') * resultMap.get('num2')");
System.out.println("获取到的字符串结果:"+str2);
//逻辑判断
str2 = shell.evaluate("if((resultMap.get('num1') * resultMap.get('num2')) == 8){return '等于8'}else{return '不等于8'}");
System.out.println("获取到的字符串结果:"+str2);
long endDate = System.currentTimeMillis();
System.out.println("耗时:"+(endDate-startDate));
shell = null;
binding = null;
}