现在的位置: 首页 > 综合 > 正文

groovy 三种运用

2017年10月31日 ⁄ 综合 ⁄ 共 2793字 ⁄ 字号 评论关闭

1、groovyShell 脚本语言运用,支持表达式及脚本文件:

def run(foo) {
       println 'Hello World!'
       x = 123
       foo * 10
}
run foo

 

public class TestGroovyShell {
 /**
  * @param args
  */
 public static void main(String[] args) {
  try {
   Binding binding = new Binding();
   binding.setProperty("foo", new Integer(2));
   GroovyShell shell = new GroovyShell(binding);
   
   Object value = shell.evaluate(new File("src/groovy/GroovyShellHellow.groovy"));
   System.out.println(value);
  } catch (CompilationFailedException e) {
   e.printStackTrace();
  } catch (IOException e) {
   e.printStackTrace();
  }
    }
}

2、Java中动态加载和运行Groovy代码

  

package groovy;

/**
 * @author zhangchao02
 *
 */
public class talk{

 public String say(String talkContext) {
  System.out.println("my say:" + talkContext);
  return talkContext;
 }

}

public class TestGroovyShell {
 /**
  * @param args
  */
 public static void main(String[] args) {
  try {
   Binding binding = new Binding();
   binding.setProperty("foo", new Integer(2));
   GroovyShell shell = new GroovyShell(binding);
   
   Object value = shell.evaluate(new File("src/groovy/GroovyShellHellow.groovy"));
   System.out.println(value);
  } catch (CompilationFailedException e) {
   e.printStackTrace();
  } catch (IOException e) {
   e.printStackTrace();
  }
    }
}

public class GroovyHelper {
    private static final Logger logger = LoggerFactory.getLogger(GroovyHelper.class);
 private static GroovyClassLoader loader;

 static {
  ClassLoader cl = new GroovyHelper().getClass()
    .getClassLoader();
  loader = new GroovyClassLoader(cl);
 }

 private GroovyHelper() {
 };

 public static GroovyObject getGroovyObject(String filePath) {
  File groovyFile = new File(filePath);
  if(!groovyFile.exists()){
   logger.error("GroovyHelper getGroovyObject groovyFile is not exists filePath={}", filePath);
   return null;
  }
  
  GroovyObject groovyObject = null;
  try {
   loader.parseClass(groovyFile);
   Class<?> groovyClass = loader.parseClass(groovyFile);
   groovyObject = (GroovyObject) groovyClass.newInstance();
  } catch (Exception e) {
   e.printStackTrace();
  }
  return groovyObject;
 }

 public static Object invokeMethod(GroovyObject groovyObject,
   String paramString, Object paramObject) {
  Object result = groovyObject.invokeMethod(paramString, paramObject);
  return result;
 }
 
 public static Object invokeMethodShell(){
  Object result = null;
  return result;
 }
}

3、groovy 脚本引擎:

 public static void main(String[] args) {
  String[] roots  =   new  String[]  {"src/groovy/"} ;
  try {
   GroovyScriptEngine gse  =   new  GroovyScriptEngine(roots);
   Binding binding = new Binding();
   binding.setProperty("foo", new Integer(2));
   gse.run( "GroovyShellHellow.groovy" , binding);
   System.out.println(binding.getVariable("x"));
   System.out.println(binding.getVariable("foo"));
  } catch (IOException e) {
   // TODO Auto-generated catch block
   e.printStackTrace();
  } catch (ResourceException e) {
   // TODO Auto-generated catch block
   e.printStackTrace();
  } catch (ScriptException e) {
   // TODO Auto-generated catch block
   e.printStackTrace();
  }
 }

 

抱歉!评论已关闭.