一:什么是Groovy
简单地说, Groovy 是下一代的 java 语言,跟 java 一样 , 它也运行在 JVM 中。作为跑在 JVM 中的另一种语言, groovy 语法与 Java 语言的语法很相似。同时, Groovy 抛弃了 java 烦琐的文法。同样的语句,使用 groovy 能在最大限度上减少你的击键次数——这确实是“懒惰程序员们”的福音。
二:Groovy安装
1.windows安装Groovy
下载地址:https://groovy.apache.org/download.html
使用windows安装包(只有部分版本提供):
下载二进制文件安装:
-
- 下载一个Groovy二进制版本并且解压缩到本地盘上(你想要安装的位置)
- 设置
GROOVY_HOME
环境变量到刚刚解压缩安装目录 - 在PATH环境变量后面加入
GROOVY_HOME/bin
环境变量 - 设置好
JAVA_HOME
环境变量,如果你使用过Ant或Maven这样的构建工具这一步应该已经设置好了 - 以上已安装好groovy,使用如下:
- Groovysh-----打开groovy shell命令交互窗口
- groovyConsole-----打开图形化交互页面
- groovy someScirpt-----groovy执行执行groovy脚本
2.linux安装Groovy
3.IDE集成Groovy
使用mavne集成:
只是没有模块*的Groovy的核心。还包括jarjar'ed版本的Antlr,ASM以及所需CLI实现类的内部副本 <groupId>org.codehaus.groovy</groupId> <artifactId>groovy</artifactId> <version>x.y.z</version> "$module"代表不同的可选groovy模块*。示例:<artifactId>groovy-sql</artifactId> <groupId>org.codehaus.groovy</groupId> <artifactId>groovy-$module</artifactId> <version>x.y.z</version> 核心加上所有模块(不包括可选模块),根据版本打包方案**。 <groupId>org.codehaus.groovy</groupId> <artifactId>groovy-all</artifactId> <version>x.y.z</version> <type>pom</type> <!-- required JUST since Groovy 2.5.0 -->
4.Groovy版本管理器
linux选择SDKMAN或者GVM(Groovy enVironment Manager)
二:JAVA和Groovy混合使用
1.JAVA类中调用Groovy类
以下是Java调用Groovy测试类: import com.zcx.springstudy.groovy.groovyUtils.DynamicGroovyClass; import groovy.lang.GroovyObject; public class GroovyTest { public static void main(String[] args) { GroovyObject instance = new DynamicGroovyClass(); Object result1 = instance.invokeMethod("querk","18"); System.out.println("received:"+result1); Object result2 = instance.invokeMethod("like",new Object[]{"1","22","33"}); System.out.println("received:"+result2); } } 以下是Groovy类: package com.zcx.springstudy.groovy.groovyUtils class DynamicGroovyClass { //当调用此groovy类的方法不存在时执行此方法 def methodMissing(String name,args) { println("you called $name with ${args.join(', ')}") args.size() } //地定义的groovy方法 def querk(String age) { println("已经调用到querk方法....") println("age==="+age) } }
2.Java类中调用Grovvy脚本
以下是再java类中调用groovy脚本: package com.zcx.springstudy.groovy; import javax.script.ScriptEngine; import javax.script.ScriptEngineManager; import javax.script.ScriptException; public class CallGroovy { public static void main(String[] args) { qianruCall();//调用嵌入式groovy脚本 } //嵌入式调用groovy脚本 public static void qianruCall() { ScriptEngineManager manager = new ScriptEngineManager(); ScriptEngine engine = manager.getEngineByName("groovy"); try { engine.put("name","Tom1"); Object result = engine.eval("println(\"hello $name\");name = \"Tom2\""); System.out.println("receive return:" + result); } catch (ScriptException e) { e.printStackTrace(); } } }
3.Groovy类中调用JAVA类
以下是在groovy类中调用java类中的方法测试: package com.zcx.springstudy.groovy.groovyUtils import com.zcx.springstudy.groovy.Demo1JavaClass //groovy方法中调用java方法 def demo1() { //调用java类中的方法 Demo1JavaClass.method1() } //调用groovy方法 demo1() 以下是java类: package com.zcx.springstudy.groovy; public class Demo1JavaClass { public static void method1() { System.out.println("已经调用到java代码了!!!"); System.out.println("hello java!!!"); } }
4.Groovy类中调用Groovy脚本
以下为groovy类调用groovy脚本测试: package com.zcx.springstudy.groovy.groovyUtils //groovy方法中调用groovy脚本 def demo1() { name = "Tom1" shell = new GroovyShell(binding) //调用脚本 evaluate(new File("./ScriptGroovy1.groovy")) } //调用 demo1() 以下是groovy脚本: package com.zcx.springstudy.groovy.groovyUtils println("name $name") name = "Tom2"
5.Groovy脚本中调用JAVA类
以下是groovy类中调用java类: package com.zcx.springstudy.groovy.groovyUtils import com.zcx.springstudy.groovy.Demo1JavaClass //调用java类中的方法 Demo1JavaClass.method1() 以下 是java类: package com.zcx.springstudy.groovy; public class Demo1JavaClass { public static void method1() { System.out.println("已经调用到java代码了!!!"); System.out.println("hello java!!!"); } }
6.Groovy脚本中执行Groovy类
以下是在groovy脚本中调用groovy类测试: package com.zcx.springstudy.groovy.groovyUtils dynamic = new DynamicGroovyClass() dynamic.querk("20") 以下是groovy类: package com.zcx.springstudy.groovy.groovyUtils class DynamicGroovyClass { def querk(String age) { println("已经调用到querk方法....") println("age==="+age) } }
7.Groovy脚本中执行Groovy脚本:
以下是groovy脚本中调用groovy脚本: package com.zcx.springstudy.groovy.groovyUtils println("now in script2") //使用指定的binding1用于传参,默认为binding binding1 = new Binding() binding1.setProperty("name","Tom1") shell = new GroovyShell(binding1) //调用脚本 result = shell.evaluate(new File("./ScriptGroovy1.groovy")) //接收返回值 println("receive1 return: $result") println("hello "+binding1.getProperty("name")) 以下是被调用的groovy脚本: package com.zcx.springstudy.groovy.groovyUtils println("name $name") name = "Tom2"