`
364434006
  • 浏览: 593990 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

Groovy之嵌入java协同工作

 
阅读更多

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}!"

 

 

分享到:
评论

相关推荐

    Grails Getting Started II 中文版

    4. **MVC架构**:了解Grails中的模型、视图和控制器是如何协同工作的。模型负责业务逻辑,视图处理用户界面,而控制器则是两者之间的桥梁。 5. **GORM(Grails Object-Relational Mapping)**:GORM是Grails的内置...

    ireportTemp

    10. **JasperReports库**:iReport是JasperReports库的配套设计工具,JasperReports库是一个强大的报表生成引擎,可以在Java应用中嵌入报表功能。 了解以上知识点,将有助于你在使用iReport时更好地管理和优化报表...

    ireport+jasperreport API

    ireport是基于Java的报表设计工具,它允许开发者使用直观的拖放界面创建报表布局。ireport-cn-1.doc和ireport中文用户手册.doc提供了详尽的中文教程,帮助初学者快速上手。通过这些文档,你可以了解如何设置数据源、...

    接口测试工具-SoapUI

    SoapUI支持与SVN等版本控制系统的集成,方便团队成员之间的协同工作。 ##### 6.5 属性操作 属性操作是指对测试对象中的属性进行设置或修改。通过这种方式可以灵活调整测试用例的配置,适应不同的测试场景。 #####...

    ScriptBot-开源

    理解ScriptBot,我们需要深入探讨这两个组件以及它们如何协同工作。 1. **PircBot**: PircBot是Java编写的 IRC 机器人框架,它为开发者提供了构建 IRC 机器人的基本工具和接口。PircBot 提供了连接到 IRC 服务器、...

Global site tag (gtag.js) - Google Analytics