第一次接触groovy,主要是在java中嵌入groovy脚本,因为groovy和java的融合度非常好。
先放上来第一次写的一段groovy:
其实它完成的就是一句java的system.out操作,主要为了理解binding在groovy中的应用
说一下背景,这里的功能是为了打印日志,本来用的是system.out,结果师父为了让我接触一下groovy,就强行让我加段脚本
然后我就学了一下groovy的强大!
首先,java和groovy的结合有几种方式:(首先别忘了添加groovy的依赖包!)
1)直接运行groovy的脚本(就是我这种啦)
2)java中动态运行groovy脚本:就是java加载一个groovy脚本,然后调用脚本的方法
给个例子:
packagegroovy;importgroovy.lang.GroovyClassLoader;importgroovy.lang.GroovyObject;importjava.io.File;public classJava2GroovyDynamic {public static void main(String[] args) throwsException {//TODO Auto-generated method stub
ClassLoader parent=ClassLoader.getSystemClassLoader();
GroovyClassLoader loader= newGroovyClassLoader(parent);
Class groovyClass= loader.parseClass(new File("D:\\workspace\\groovy\\src\\groovy\\GroovyDemo.groovy"));
GroovyObject groovyObject=(GroovyObject)groovyClass.newInstance();
Object[] param= {123,321};int res = (int) groovyObject.invokeMethod("add", param);
System.out.println("res="+res);
}
}
groovy脚本:
packagegroovyclassGroovyDemo {static int add(int x,inty) {return x+y;
}staticmain(args) {int z = add(123,321);
println("x+y="+z);
}
}
3)groovy脚本引擎:通过设定CLASSPATH来初始化groovy脚本引擎,可以运行该path下的任何groovy脚本文件了
packagegroovy;importgroovy.lang.Binding;importgroovy.util.GroovyScriptEngine;public classJava2GroovyEngine {public static void main(String[] args) throwsException {//TODO Auto-generated method stub
String path= "D:\\workspace\\groovy\\src\\groovy\\";
GroovyScriptEngine gse= newGroovyScriptEngine(path);
Binding binding= newBinding();
binding.setVariable("input", "Groovy");
gse.run("Test.groovy", binding);
System.out.println(binding.getVariable("output"));
}
}
groovy脚本:
packagegroovy;
output= "Hello ${input}";