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脚本的理解,可以考虑后续写一个脚本引擎来玩玩。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。