第一次接觸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腳本,然后調用腳本的方法
給個例子:
package groovy; import groovy.lang.GroovyClassLoader; import groovy.lang.GroovyObject; import java.io.File; public class Java2GroovyDynamic { public static void main(String[] args) throws Exception { // TODO Auto-generated method stub ClassLoader parent = ClassLoader.getSystemClassLoader(); GroovyClassLoader loader = new GroovyClassLoader(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腳本:
package groovy class GroovyDemo { static int add(int x,int y) { return x+y; } static main(args) { int z = add(123,321); println("x+y="+z); } }
3)groovy腳本引擎:通過設定CLASSPATH來初始化groovy腳本引擎,可以運行該path下的任何groovy腳本文件了
package groovy; import groovy.lang.Binding; import groovy.util.GroovyScriptEngine; public class Java2GroovyEngine { public static void main(String[] args) throws Exception { // TODO Auto-generated method stub String path = "D:\\workspace\\groovy\\src\\groovy\\"; GroovyScriptEngine gse = new GroovyScriptEngine(path); Binding binding = new Binding(); binding.setVariable("input", "Groovy"); gse.run("Test.groovy", binding); System.out.println(binding.getVariable("output")); } }
groovy腳本:
package groovy; output = "Hello ${input}";