Groovy是一个运行于jvm上的语言,所以理所当然能够与java协同工作,下面列出原生集成groovy与java的几种方式
1、基于Shell脚本
Binding binding = new Binding(); binding.setVariable("foo", new Integer(2)); GroovyShell shell = new GroovyShell(binding); //执行groovy脚本 Object value = shell.evaluate("println 'Hello World!'; x = 123; return foo * 10"); //也可以执行groovy脚本文件,如果TestGroovy.groovy是定义的一个类对象,默认会去执行main函数 //Object obj = shell.evaluate(new File("src/TestGroovy.groovy")); assert value.equals(new Integer(20)); assert binding.getVariable("x").equals(new Integer(123));
2、基于通用的基础类
Binding binding = new Binding(); CompilerConfiguration config = new CompilerConfiguration(); config.setScriptBaseClass("MyScript");//MyScript.groovy文件默认在src目录下 GroovyShell shell = new GroovyShell(ScriptBaseTest.class.getClassLoader(), binding, config); Object rst = shell.evaluate("test1('d')");//执行MyScript.groovy脚本的test1方法(非私有) System.out.println(rst);//输出返回的对象
3、基于groovy的类加载器
ClassLoader loader = GroovyClassLoaderTest.class.getClassLoader(); //通过java类加载器构建一个groovyclass加载器 GroovyClassLoader groovyClassLoader = new GroovyClassLoader(loader); //动态解析加载指定的groovy脚本文件 Class groovyClz = groovyClassLoader.parseClass(new File("src/GroovyClassLoaderTest2.groovy")); //构建一个groovyobject实例 GroovyObject groovyObject = (GroovyObject) groovyClz.newInstance(); groovyObject.setProperty("name", "捷克"); System.out.println(groovyObject.getProperty("name")); groovyObject.invokeMethod("test1", "哈哈"); Object obj = groovyObject.invokeMethod("test2", null);//动态执行test2方法(私有也行) System.out.println(obj);
Binding对象:
Bindind对象可以绑定参数对象传递到执行的脚步中使用
例如基于shell的执行方式,可以在脚本中直接使用foo参数
GroovyScriptEngine对象:
通过GroovyScriptEngine在初始化指定的目录或url路径下执行脚本
String[] roots = new String[] { "/my/groovy/script/path" }; //通过指定的roots来初始化GroovyScriptEngine GroovyScriptEngine gse = new GroovyScriptEngine(roots); Binding binding = new Binding(); binding.setVariable("input", "world"); //在初始化指定的roots下查找hello.groovy并执行 gse.run("hello.groovy", binding); System.out.println(binding.getVariable("output"));
hello.groovy文件:
output = "Hello, ${input}!"
相关推荐
4. **MVC架构**:了解Grails中的模型、视图和控制器是如何协同工作的。模型负责业务逻辑,视图处理用户界面,而控制器则是两者之间的桥梁。 5. **GORM(Grails Object-Relational Mapping)**:GORM是Grails的内置...
10. **JasperReports库**:iReport是JasperReports库的配套设计工具,JasperReports库是一个强大的报表生成引擎,可以在Java应用中嵌入报表功能。 了解以上知识点,将有助于你在使用iReport时更好地管理和优化报表...
ireport是基于Java的报表设计工具,它允许开发者使用直观的拖放界面创建报表布局。ireport-cn-1.doc和ireport中文用户手册.doc提供了详尽的中文教程,帮助初学者快速上手。通过这些文档,你可以了解如何设置数据源、...
SoapUI支持与SVN等版本控制系统的集成,方便团队成员之间的协同工作。 ##### 6.5 属性操作 属性操作是指对测试对象中的属性进行设置或修改。通过这种方式可以灵活调整测试用例的配置,适应不同的测试场景。 #####...
理解ScriptBot,我们需要深入探讨这两个组件以及它们如何协同工作。 1. **PircBot**: PircBot是Java编写的 IRC 机器人框架,它为开发者提供了构建 IRC 机器人的基本工具和接口。PircBot 提供了连接到 IRC 服务器、...