zoukankan      html  css  js  c++  java
  • groovy初体验:groovy在java中的应用

    第一次接触groovy,主要是在java中嵌入groovy脚本,因为groovy和java的融合度非常好。

    先放上来第一次写的一段groovy:

    其实它完成的就是一句java的system.out操作,主要为了理解binding在groovy中的应用

    说一下背景,这里的功能是为了打印日志,本来用的是system.out,结果师父为了让我接触一下groovy,就强行让我加段脚本

    然后我就学了一下groovy的强大!

    首先,java和groovy的结合有几种方式:(首先别忘了添加groovy的依赖包!

    1)直接运行groovy的脚本(就是我这种啦)

    2)java中动态运行groovy脚本:就是java加载一个groovy脚本,然后调用脚本的方法

    给个例子:

    package groovy;
    
    import groovy.lang.GroovyClassLoader;
    
    import groovy.lang.GroovyObject;
    
    import java.io.File;
    
    public class Java2GroovyDynamic {
    
    public static void main(String[] args) throws Exception {
    
    // TODO Auto-generated method stub
    
    ClassLoader parent = ClassLoader.getSystemClassLoader();
    
    GroovyClassLoader loader = new GroovyClassLoader(parent);
    
    Class groovyClass = loader.parseClass(new File("D:\workspace\groovy\src\groovy\GroovyDemo.groovy"));
    
    GroovyObject groovyObject = (GroovyObject)groovyClass.newInstance();
    
    Object[] param = {123,321};
    
    int res = (int) groovyObject.invokeMethod("add", param);
    
    System.out.println("res="+res);
    
      }
    
    }

    groovy脚本:

    package groovy
    
    class GroovyDemo {
    
    static int add(int x,int y) {
    
    return x+y;
    
    }
    
    static main(args) {
    
    int z = add(123,321);
    
    println("x+y="+z);
    
    }
    
    }

    3)groovy脚本引擎:通过设定CLASSPATH来初始化groovy脚本引擎,可以运行该path下的任何groovy脚本文件了

    package groovy;
    
    import groovy.lang.Binding;
    
    import groovy.util.GroovyScriptEngine;
    
    public class Java2GroovyEngine {
    
    public static void main(String[] args) throws Exception {
    
    // TODO Auto-generated method stub
    
    String path = "D:\workspace\groovy\src\groovy\";
    
    GroovyScriptEngine gse = new GroovyScriptEngine(path);
    
    Binding binding = new Binding();
    
    binding.setVariable("input", "Groovy");
    
    gse.run("Test.groovy", binding);
    
    System.out.println(binding.getVariable("output"));
    
    }
    
    }

    groovy脚本:

    package groovy;
    
    output = "Hello ${input}";
  • 相关阅读:
    用户使用调查报告(追光的人)
    项目Beta冲刺(7/7)(追光的人)(2019.5.29)
    项目Beta冲刺(6/7)(追光的人)(2019.5.28)
    项目Beta冲刺(5/7)(追光的人)(2019.5.27)
    项目Beta冲刺(4/7)(追光的人)(2019.5.26)
    项目Beta冲刺(3/7)(追光的人)(2019.5.25)
    项目Beta冲刺(2/7)(追光的人)(2019.5.24)
    项目Beta冲刺随笔集合
    项目Alpha冲刺随笔集合
    项目Beta冲刺总结随笔
  • 原文地址:https://www.cnblogs.com/x1mercy/p/9254878.html
Copyright © 2011-2022 走看看