`
364434006
  • 浏览: 592014 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

Groovy之嵌入java协同工作

 
阅读更多

Groovy是一个运行于jvm上的语言,所以理所当然能够与java协同工作,下面列出原生集成groovy与java的几种方式

1、基于Shell脚本

 

Binding binding = new Binding();
binding.setVariable("foo", new Integer(2));
GroovyShell shell = new GroovyShell(binding);

//执行groovy脚本
Object value = shell.evaluate("println 'Hello World!'; x = 123; return foo * 10");
//也可以执行groovy脚本文件,如果TestGroovy.groovy是定义的一个类对象,默认会去执行main函数
//Object obj = shell.evaluate(new File("src/TestGroovy.groovy"));
assert value.equals(new Integer(20));
assert binding.getVariable("x").equals(new Integer(123));

2、基于通用的基础类

 

 

Binding binding = new Binding();
CompilerConfiguration config =  new CompilerConfiguration();
config.setScriptBaseClass("MyScript");//MyScript.groovy文件默认在src目录下
		
GroovyShell shell = new GroovyShell(ScriptBaseTest.class.getClassLoader(), binding, config);
Object rst = shell.evaluate("test1('d')");//执行MyScript.groovy脚本的test1方法(非私有)
System.out.println(rst);//输出返回的对象

 3、基于groovy的类加载器

 

 

ClassLoader loader = GroovyClassLoaderTest.class.getClassLoader();
//通过java类加载器构建一个groovyclass加载器
GroovyClassLoader groovyClassLoader = new GroovyClassLoader(loader);
//动态解析加载指定的groovy脚本文件
Class groovyClz = groovyClassLoader.parseClass(new File("src/GroovyClassLoaderTest2.groovy"));
//构建一个groovyobject实例
GroovyObject groovyObject = (GroovyObject) groovyClz.newInstance();
groovyObject.setProperty("name", "捷克");
System.out.println(groovyObject.getProperty("name"));

groovyObject.invokeMethod("test1", "哈哈");

Object obj = groovyObject.invokeMethod("test2", null);//动态执行test2方法(私有也行)
System.out.println(obj);

 

Binding对象:

Bindind对象可以绑定参数对象传递到执行的脚步中使用

例如基于shell的执行方式,可以在脚本中直接使用foo参数

 

GroovyScriptEngine对象:

通过GroovyScriptEngine在初始化指定的目录或url路径下执行脚本

String[] roots = new String[] { "/my/groovy/script/path" };
//通过指定的roots来初始化GroovyScriptEngine
GroovyScriptEngine gse = new GroovyScriptEngine(roots);
Binding binding = new Binding();
binding.setVariable("input", "world");
//在初始化指定的roots下查找hello.groovy并执行
gse.run("hello.groovy", binding);
System.out.println(binding.getVariable("output"));

 hello.groovy文件:

output = "Hello, ${input}!"

 

 

分享到:
评论

相关推荐

    groovy和Java相互调用1

    标题中的“Groovy和Java相互调用1”指的是在编程时如何在Groovy语言环境中调用Java类,以及反之,如何在Java程序中调用Groovy类。这是一种跨语言交互的方式,特别是在混合使用Groovy和Java的项目中非常常见。 ...

    Java中使用Groovy的三种方式

    在Java开发中,Groovy是一种强大的、动态类型的脚本语言,它可以无缝地与Java代码集成,为开发者提供了更简洁、灵活的语法。本文将深入探讨在Java项目中使用Groovy的三种主要方式,并阐述它们各自的优势和应用场景。...

    [Groovy] Making Java Groovy 英文版

    Making Java Groovy is a practical handbook for developers who want to blend Groovy into their day to day work with Java It starts by introducing the key differences between Java and Groovy and how you...

    Java调用Groovy,实时动态加载数据库groovy脚本

    1. 引入Groovy库:在Java项目中添加Groovy的相关依赖,通常是`groovy-all`,确保Java能够访问Groovy运行时环境。 2. 创建GroovyClassLoader:使用这个类加载器可以动态加载和执行Groovy脚本。它继承自Java的...

    java 动态脚本语言 精通 Groovy

    9. **Scripting in Java Applications**:Groovy可以嵌入到Java应用中作为脚本语言使用,例如在服务器端处理HTTP请求,或者作为配置文件来动态改变应用行为。 10. **持续集成与构建工具**:Groovy也是构建工具如...

    Groovy Recipes Greasing the Wheels of Java.pdf

    本书不仅提供了丰富的代码示例,还涵盖了广泛的主题,从基础概念到高级技巧,旨在帮助读者全面了解Groovy如何与Java协同工作,从而实现更高效、更灵活的开发过程。无论是想提高代码效率,还是寻求新的开发思路,...

    Groovy+Java混合使用例子

    Groovy环境搭建教程中的例子工程,纯Java、纯Groovy以及Java+Groovy混合 教程参考:http://blog.csdn.net/rcom10002/archive/2011/06/26/6568557.aspx

    java在嵌入运行groovy代码1

    Java 嵌入运行 Groovy 代码是一种常见的技术实践,特别是在需要动态脚本执行或灵活扩展功能的场景中。Groovy 是一种与 Java 兼容的动态编程语言,它的语法简洁,适合编写脚本和快速原型开发。在 Java 应用程序中运行...

    hugo110-java_run_groovy-master_java_

    标题“hugo110-java_run_groovy-master_java_”表明这是一个关于使用Java运行Groovy脚本的项目,可能是某个GitHub仓库的克隆或归档。描述中提到,这个环境是为了方便用户(可能是开发者)实践Groovy语言,并为后续的...

    Groovy脚本:Java平台的动态编程利器

    Groovy是一种运行在Java平台上的动态脚本语言,它与Java紧密集成,提供了一种简洁、灵活的方式来编写Java代码。Groovy不仅支持静态类型检查,还可以在运行时动态地编译和执行代码,这使得它在Java平台中的应用场景...

    Java Groovy

    ### Java与Groovy:融合的力量 #### 知识点一:Java与Groovy...本书不仅详细介绍了Groovy的核心特性及其在Java项目中的应用方式,还提供了丰富的实践案例和技巧,有助于读者深入理解并掌握这两种语言之间的协同作用。

    SpringBoot-Gradle-Maven-Java-Groovy

    SpringBoot、Gradle、Maven、Java和Groovy是Java生态系统中的重要组成部分,它们在现代软件开发中扮演着至关重要的角色。这篇详细的知识点解析将深入探讨这些技术及其相互关系。 1. **SpringBoot**: SpringBoot是...

    Java整合Groovy脚本笔记

    Java整合Groovy脚本,Java整合Groovy脚本Java整合Groovy脚本,Java整合Groovy脚本Java整合Groovy脚本,Java整合Groovy脚本Java整合Groovy脚本,Java整合Groovy脚本Java整合Groovy脚本,Java整合Groovy脚本Java整合...

    java嵌入groovy所需jar 2.3.7最新版

    java嵌入groovy所需jar 2.3.7最新版

    groovy调用java-se类库学习案例 Java学习资料

    Groovy是一种基于JVM的动态编程语言,它与Java有着紧密的联系,可以直接调用Java的类库。Groovy的设计目标是提供一个简洁、灵活且强大的语法,使得开发者能够更高效地编写脚本和应用程序。在Java学习的过程中,了解...

    Java调用Groovy

    Java调用Groovy是一种常见的技术,特别是在开发过程中需要动态脚本支持时。Groovy是一种基于JVM(Java Virtual Machine)的、动态类型的编程语言,它与Java有着良好的互操作性,能够无缝集成到Java项目中。这篇博客...

    groovy programming(2006.12).pdf

    《Groovy编程:Java开发者的入门指南》是Kenneth Barclay和John Savage为Java开发者编写的关于Groovy语言的详细介绍。此书首次出版于2006年,由Morgan Kaufmann Publishers出版,该出版社隶属于Elsevier集团。本书...

    精通 Groovy--下一代开发语言

    Groovy 是 JVM 的一个替代语言 — 替代 是指可以用 Groovy 在 Java 平台上进行 Java 编程,使用方式基本与使用 Java 代码的方式相同。在编写新应用程序时,Groovy 代码能够与 Java 代码很好地结合,也能用于扩展现有...

    java调用脚本语言笔记(jython,jruby,groovy)

    本文将深入探讨如何在Java中调用三种流行的脚本语言:Jython、JRuby和Groovy。 ### Jython Jython是Python的一个Java实现,它允许Java开发者利用Python的强大语法和丰富的库。要使用Jython,首先需要在项目中引入...

Global site tag (gtag.js) - Google Analytics