博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
java中调用groovy
阅读量:4315 次
发布时间:2019-06-06

本文共 4968 字,大约阅读时间需要 16 分钟。

Groovy在Java中的应用,做几个小例子以备查 

package com.boco.efficiency.groovy;import groovy.lang.Binding;import groovy.lang.GroovyClassLoader;import groovy.lang.GroovyObject;import groovy.lang.GroovyShell;import groovy.text.SimpleTemplateEngine;import groovy.text.Template;import groovy.util.GroovyScriptEngine;import java.io.File;import java.io.IOException;import java.util.HashMap;import java.util.Map;import org.apache.log4j.Logger;import org.codehaus.groovy.control.CompilationFailedException;public class groovyUsage {    private static final Logger logger = Logger.getLogger(groovyUsage.class);    /*     * UseClassLoader usage example     * Use groovy UseClassLoader to parse/compile a groovy file and run it      * */        public  void UseClassLoader() throws Exception {        ClassLoader parent =  getClass().getClassLoader();          GroovyClassLoader loader = new GroovyClassLoader(parent);          Class groovyClass = loader.parseClass(new File("D:\\StudyCode\\checkGroovy\\src\\main\\java\\com\\boco\\common\\HelloWorld.groovy"));          GroovyObject groovyObject = (GroovyObject) groovyClass.newInstance();          Object[] args = {};          groovyObject.invokeMethod("sayHello", args);     }        /*     * GroovyShell usage example     * Use groovy shell to calculate dynamically      注意其中的groovyShell.evalucate会比较好用     * */    public  void UseGroovyShell() {        Binding binding = new Binding();        binding.setVariable("foo", new Integer(30));        GroovyShell shell = new GroovyShell(binding);        Object value = shell.evaluate("println 'Hello World! I\\'m in shell'; x = 123; return foo * 10");        logger.info("result:  " + value);        assert value.equals(new Integer(20));    }        /*     * GroovyScriptEngine usage example     * GroovyScriptEngine是实际场景中应用最多的,其构造参数中需要加入urls指明groovy应用路径     * */    public void useGroovyScriptEngine()  throws Exception {                  String[] roots = new String[] { "/StudyCode/checkGroovy/src/main/java/com/boco/common/" };          GroovyScriptEngine gse = new GroovyScriptEngine(roots);          Binding binding = new Binding();          binding.setVariable("input", "world");        gse.run("hello.groovy", binding);        logger.info(binding.getVariable("output"));      }        /*     * Use groovy.Text.Template to gen new String       这在动态生成某些文本文件或script时会有大用处^^     * */    public void useGroovyTextTemplate()  throws Exception {                    File file=new File("D:\\StudyCode\\checkGroovy\\src\\main\\java\\com\\boco\\common\\template.tmpl");            Template tmpl =null;            try {                tmpl = new SimpleTemplateEngine().createTemplate(file);            } catch (CompilationFailedException e) {                e.printStackTrace();            } catch (ClassNotFoundException e) {                e.printStackTrace();            } catch (IOException e) {                e.printStackTrace();            }                        Map binding = new HashMap();            binding.put("id", "101");                binding.put("name", "101");                binding.put("salary", "50000");                String xml = tmpl.make(binding).toString();            logger.info(xml);     }}

配置文件信息

D:\StudyCode\checkGroovy\src\main\java\com\haha\common>cat hello.groovyoutput = "Hello, ${input}!"D:\StudyCode\checkGroovy\src\main\java\com\haha\common>cat HelloWorld.groovyclass HelloWorld {        public void sayHello() {                System.out.println("hello world from HelloWorld.groovy");        }}D:\StudyCode\checkGroovy\src\main\java\com\haha\common>cat check.groovyimport com.haha.common.alarmObj;public class check {        public void localHandle(alarmObj src,alarmObj dest) {                long newfp3=src.getFp0()+src.getFp1()+src.getFp2();                System.out.println("call in groovy: " + newfp3);        }}D:\StudyCode\checkGroovy\src\main\java\com\haha\common>cat template.tmpl
${id}
${name}
${salary}

调用各用例

package com.boco.efficiency.groovy;import java.io.File;public class groovyCheck {    /**     * @param args     */    public static void main(String[] args) throws Exception{        groovyUsage groovyExample = new groovyUsage();        groovyExample.UseGroovyShell();        groovyExample.UseClassLoader();        groovyExample.useGroovyScriptEngine();        groovyExample.useGroovyTextTemplate();    }    }

最终输出

Hello World! I'm in shell[2013-11-05 17:03:47,432] INFO [com.boco.efficiency.groovy.groovyUsage] - [result:  300]hello world from HelloWorld.groovy[2013-11-05 17:03:47,488] INFO [com.boco.efficiency.groovy.groovyUsage] - [Hello, world!][2013-11-05 17:03:47,506] INFO [com.boco.efficiency.groovy.groovyUsage] - [
101
101
50000
]

 

参考文档

 

转载于:https://www.cnblogs.com/vigarbuaa/p/3408558.html

你可能感兴趣的文章
从Vue.js窥探前端行业
查看>>
学习进度
查看>>
poj3368 RMQ
查看>>
“此人不存在”
查看>>
github.com加速节点
查看>>
解密zend-PHP凤凰源码程序
查看>>
python3 序列分片记录
查看>>
Atitit.git的存储结构and 追踪
查看>>
atitit 读书与获取知识资料的attilax的总结.docx
查看>>
B站 React教程笔记day2(3)React-Redux
查看>>
找了一个api管理工具
查看>>
Part 2 - Fundamentals(4-10)
查看>>
使用Postmark测试后端存储性能
查看>>
NSTextView 文字链接的定制化
查看>>
第五天站立会议内容
查看>>
CentOs7安装rabbitmq
查看>>
(转))iOS App上架AppStore 会遇到的坑
查看>>
解决vmware与主机无法连通的问题
查看>>
做好产品
查看>>
项目管理经验
查看>>