实战 Groovy: 在 Java 应用程序中加一些 Groovy 进来
2009-11-19 00:00:00 来源:WEB开发网可以看到,运行 Groovy 脚本非常容易。我只是创建了 GroovyShell 的实例,传递进脚本名称,然后调用 run() 方法。
还可以做其他事情。如果您喜欢,那么也可以得到自己脚本的 Script 类型的 GroovyShell 实例。使用 Script 类型,您就可以传递进一个 Binding 对象,其中包含任何运行时值,然后再继续调用 run() 方法,如清单 8 所示:
清单 8. 有趣的 GroovyShellpackage com.vanward.gembed;
import java.io.File;
import groovy.lang.Binding;
import groovy.lang.GroovyShell;
import groovy.lang.Script;
public class ShellParseEmbedGroovy{
public static void main(String args[]) throws Throwable{
GroovyShell shell = new GroovyShell();
Script scrpt = shell.parse(
new File("C:\\dev\\groovy-embed\\src\\groovy\\
com\\vanward\\groovy\\Songs.groovy"));
Binding binding = new Binding();
Object[] path = {"C:\\music\\temp\\mp3s"};
binding.setVariable("args",path);
scrpt.setBinding(binding);
scrpt.run();
}
}
Groovy 的脚本引擎
GroovyScriptEngine 对象动态运行脚本的时候,非常像 GroovyShell。区别在于:对于 GroovyScriptEngine,您可以在实例化的时候给它提供一系列目录,然后让它根据要求去执行多个脚本,如清单 9 所示:
清单 9. GroovyScriptEngine 的作用package com.vanward.gembed;
import java.io.File;
import groovy.lang.Binding;
import groovy.util.GroovyScriptEngine;
public class ScriptEngineEmbedGroovy{
public static void main(String args[]) throws Throwable{
String[] paths = {"C:\\dev\\groovy-embed\\src\\groovy\\
com\\vanward\\groovy"};
GroovyScriptEngine gse = new GroovyScriptEngine(paths);
Binding binding = new Binding();
Object[] path = {"C:\\music\\temp\\mp3s"};
binding.setVariable("args",path);
gse.run("Songs.groovy", binding);
gse.run("BusinessObjects.groovy", binding);
}
}
更多精彩
赞助商链接