加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 大数据 > 正文

groovy 三种运用

发布时间:2020-12-14 16:53:39 所属栏目:大数据 来源:网络整理
导读: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) {

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(); ??} ?}

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读