Groovy
发布时间:2022-04-12 发布网站:大佬教程 code.js-code.com
大佬教程收集整理的这篇文章主要介绍了Groovy全攻略--嵌入篇,大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
Groovy被设计得非常轻量级,很容易迁入到任何Java应用系统。
你可以使用BSF将Groovy脚本嵌入任何Java代码中.但是Groovy提供了一个轻量级的紧密集成.下面是3种主要方法:
1.使用SHell调试脚本或表达式
在Groovy中你可以使用groovyshell对Groovy脚本和表达式进行调试.groovyshell允许你通过Binding对象传入或传出变量.
2.在Java中动态调用运行Groovy代码
你可以使用GroovyClassLoader将Groovy的类动态地载入到Java程序中并直接使用或运行它.
下面是一个例子:
ClassLoader parent = getClass().getClassLoader(
);
GroovyClassLoader loader =
new GroovyClassLoader(parent
);
Class groovyClass = loader.parseClass(
new File("src/test/groovy/script/
HelloWorld.groovy")
);
//
调用实例中的某个方法
GroovyOb
ject groovyOb
ject = (GroovyOb
ject) groovyClas
s.newInstance(
);
Ob
ject[]
args =
{};
groovyOb
ject.invokeMethod("run",
args
);
如果你想使用一个用Groovy脚本实现的接口,你可以这么使用它:
GroovyClassLoader gcl =
new GroovyClassLoader(
);
Class clazz = gc
l.parseClass(my
StringwithGroovyClass
source "Som
ename.groovy"
);
Ob
ject aScript = clazz.newInstance(
);
@H_790_15
@myInterface myOb
ject = (MyInterfac
E) aScript;
@H_790_15
@myOb
ject.interfaceMethod(
);
如果某个Groovy类实现口MyInterface接口,那么上面的代码就会很好的工作.myObject的使用方法与其他实现了MyInterface接口的Java对象一样.
3.Groovy脚本引擎
对于那些想将Groovy脚本嵌入到服务器并且在每次修改后重新装入的人来说,Groovy脚本引擎提供了一个彻底的解决方案.你可以设定系列CLASSPATH作为根来初始化Groovy脚本引擎,这些GLASSPATH可以是URL也可以是目录名.接着你就可以这些根路径下的任何Groovy脚本了.GSE会跟踪脚本间的依赖关系,因此如果任何有依赖关系的脚本被修改,整颗树将会重新编译和载入.
另外,每次执行脚本时,你都可以传入一个包含脚本可接受属性的Binding.脚本执行完以后,传入脚本中的那些属性在Binding中依然有效.下面是一个例子:
/my/groovy/script/path/Hello.groovy:
output = "
Hello, $
{input}!"
import groovy.lang
.binding;
import groovy.uti
l.GroovyScript
ENGIne;
String[]
roots =
new String[]
{ " /my/groovy/script/path " };
GroovyScript
ENGIne gse =
new GroovyScript
ENGIne(roots
);
Binding binding =
new Binding(
);
binding.setVariable( " input ", " world "
);
gse.run( " test.groovy ", binding
);
Sy
stem.out.println(binding.getVariable( " output " )
);
将打印 "
Hello,world!". 4.运行时依赖 和JDK1.4一样,Groovy Jar也依赖与ASM库上的运行时,ASM库
包括4个Jar(asm-2.1.jar,asm-util-2.1.jar,asm-attrs-2.1.jar and asm-analysis-2.1). 也就是说,只要将上面的5个Jar
添加到路径中,你就能将轻松地Groovy嵌入到
你的应用里. 另一种方案可以不用那么多的Jar.你可以用GROOVY_HOME/embeddable目录下的groovy-all-1.0-beta-x.jar.这个
jar包将Groovy和ASM组合打包成
一个方
便的
jar包.注意:groovy-all-1.0-beta-x.jar中的ASM类使用了不同的命名空间,因此要避免与使用ASM的库发生冲突.
大佬总结
以上是大佬教程为你收集整理的Groovy全攻略--嵌入篇全部内容,希望文章能够帮你解决Groovy全攻略--嵌入篇所遇到的程序开发问题。
如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。
本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。