groovy脚本不知为何物?anyway,下面通过简单一个示例帮你揭开groovy的神秘面纱。
0x01 groovy脚本
groovy脚本在我的使用过程中,其语法和java语法非常类似,但是其是有一套属于自己的脚本的,我们可以通过在java代码中调用groovy脚本,就像调用一个方法一样,可以给groovy脚本传递一些必须的参数。
0x02 groovy脚本实例
这里介绍在java中调用groovy脚本的方式示例如下:
public class GroovyScriptClient {
private static final String scriptContent = "String object = scriptContext.get(\"object\");" +
" return innerService.sayBye(object);";
public static Script getGroovyScript(){
Class<Script> clazz = clazz = new GroovyClassLoader().parseClass(scriptContent);
Script script = null;
try {
script = clazz.newInstance();
} catch (Exception ex){
System.out.println("exception" + ex);
}
Map<String, String> params = new HashMap<String, String>();
params.put("object", "yesterday");
Binding binding = new Binding();
binding.setVariable("scriptContext", params);
binding.setVariable("innerService", new ServiceTest());
script.setBinding(binding);
return script;
}
public static void main (String args[]){
Script script = GroovyScriptClient.getGroovyScript();
Object scriptResult = script.run();
System.out.println(scriptResult);
}
};
class ServiceTest{
public String sayBye(String object){
return "forget " + object;
}
}
上面是一段脚本的测试代码,这段代码可以算是一个脚本引擎的缩影,一个脚本引擎系统的核心。
scriptContent是一段简单的groovy脚本
groovy.lang.GroovyClassLoader#parseClass(java.lang.String)解析脚本字符串
通过groovy.lang.Binding可以给脚本传递参数。
innerService的value是一个对象,在脚本中可以直接使用这个对象,非常的方便。
0x03 思考
适用与一些不需要发布但是经常需要改变的情景,规模大的也可以用于做脚本引擎。同时编写脚本不需要对系统进行升级发布减少了很多发布流程,灵活修改等好处,后面还要加强groovy脚本的理解,可以考虑后续写一个脚本引擎来玩玩。
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。