依賴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;
}