`
fengzl
  • 浏览: 215616 次
  • 性别: Icon_minigender_1
  • 来自: 宁波
社区版块
存档分类
最新评论

Java调用Groovy

阅读更多

Groovy咱使用不再什么大项目上,可以用来实现规则引擎,定义一个groovy文件通过spring动态载入,在groovy里面调用java的方法,处理业务对象。我感觉这个比规则引擎更灵活~~

1.与Spring集成
Spring 2.0的Script Language集成,是让动态语言编写的类,可以良好的融入java/spring的大框架内,洗白成application context中的普通一员,拥有与其他pojo良好的交互与注入能力。
      很简单,SpringSide 里的\springside-bookstore\src\...\plugins\webservice\applicationContext-webservice-client.xml文件已说明了一切用法。
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
       xmlns:lang="http://www.springframework.org/schema/lang"
       xsi:schemaLocation="
http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd
http://www.springframework.org/schema/lang http://www.springframework.org/schema/lang/spring-lang.xsd">

    <!--Groovy版本的Web Service Client-->
    <lang:groovy id="BookServiceClient"
             refresh-check-delay="60000"
             script-source="classpath:org/springside/bookstore/plugins/webservice/service/BookServiceClient.groovy">
           <lang:property  name="serviceUrl" value="http://localhost:8080/springside/service/BookService"/>
    </lang:groovy>
</beans>

  注意spring 2.0为语言集成提供了<lang:language>的简写法,详细见Spring的参考文档第24章  
 第一个属性 refresh-check-delay,每隔一段时间扫描一次脚本的变化,reload it。
 第二个属性script-source 指向scriptsouce, <lang:property>演绎了Spring最喜爱的IOC,将serviceUr变量注入。
    当然,世上没有奇迹,Spring 与Groovy、JRuby 是靠一个Interface来定义连接点的。Spring使用BookServiceClient Bean 时,实际使用的是BookService接口。 Groovy因为是Java近亲,所以可以在类里面直接implements BookService接口,而JRuby则必须把interface作为构造参数传给RubyScriptFactory。这样有个不爽的地方,在Groovy里必须显式定义接口的所有函数和参数、返回值的类型。Ruby的Miss Method与Groovy的MOP反射顿时没了用武之地。
    舞台已经搭好,界限已经模糊,接下来就和AOP一样,看大家的想象力了。

java 代码
 
  1. 1、定义Java接口包含在Java中需要调用的Groovy方法  
  2. public interface IFoo {   
  3.     public Object run(Object foo);   
  4. }  
  5.   
  6. 2、创建Groovy类实现该接口  
  7. class Foo implements IFoo {   
  8.   
  9.        public Object run(Object foo) {  
  10.               println 'Hello World!'  
  11.               x = 123  
  12.               foo * 10  
  13.        }  
  14. }  
  15.   
  16. 3、动态载入Groovy类,创建接口实例,调用接口中定义的方法  
  17. import groovy.lang.GroovyClassLoader;  
  18.   
  19.    
  20.   
  21. import java.io.File;  
  22.   
  23.    
  24.   
  25. public class InvokeGroovy {   
  26.   
  27.     public static void main(String[] args) {  
  28.   
  29.         ClassLoader cl = new InvokeGroovy().getClass().getClassLoader();  
  30.   
  31.         GroovyClassLoader groovyCl = new GroovyClassLoader(cl);  
  32.   
  33.         try {  
  34.   
  35.             Class groovyClass = groovyCl.parseClass(new File("src/Foo.groovy"));  
  36.   
  37.             IFoo foo = (IFoo) groovyClass.newInstance();  
  38.   
  39.             System.out.println(foo.run(new Integer(2)));  
  40.   
  41.         } catch (Exception e) {  
  42.   
  43.             e.printStackTrace();  
  44.   
  45.         }  
  46.   
  47.     }  
  48.   
分享到:
评论
1 楼 pear_zhang 2009-08-08  
想问下,实际项目中Groovy能写哪方面的代码?

相关推荐

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

    总的来说,Java调用Groovy并实时加载数据库中的Groovy脚本是一种强大而灵活的解决方案,特别适用于需要频繁调整业务逻辑或进行热部署的场景。通过结合Java的稳定性和Groovy的动态性,我们可以构建出更适应变化的系统...

    Java中使用Groovy的三种方式

    本文将深入探讨在Java项目中使用Groovy的三种主要方式,并阐述它们各自的优势和应用场景。 一、作为嵌入式脚本 Java 6引入了JSR 223(Scripting for the Java Platform),允许在Java程序中直接执行脚本语言。...

    groovy和Java相互调用1

    这是一种跨语言交互的方式,特别是在混合使用Groovy和Java的项目中非常常见。 Groovy调用Java类相当直观。首先,你需要在Groovy脚本中使用`import`语句导入你想要使用的Java类。例如,如果要使用`java.util.Random`...

    SpringBoot-Gradle-Maven-Java-Groovy

    SpringBoot、Gradle、Maven、Java和Groovy是Java生态...- 在测试和配置管理中使用Groovy,如Spock测试框架和Grails配置。 理解并熟练掌握这些技术,有助于提升Java开发者的专业技能,更好地适应现代企业级开发的需求。

    java与groovy互相调用1

    首先,我们来看Java调用Groovy的情况。在示例中,我们定义了一个Groovy类`GroovyBean`,它包含一个字段`name`,一个构造函数,一个`calc`方法和一个静态的`hello`方法。在Java类`JavaCallGroovy`中,我们可以直接...

    干货:Jenkins Pipeline调用shell、python、java、groovy脚本的正确使用姿势.doc

    Jenkins Pipeline 调用 shell、python、java、groovy 脚本的正确使用姿势 Jenkins Pipeline 是一个强大的自动化工具,可以帮助开发者自动化构建、测试和部署流程。在设计 Pipeline 脚本的过程中,经常会遇到调用...

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

    在Java项目中,使用Groovy通常更加方便,因为不需要额外的引擎,可以直接创建`GroovyShell`或`GroovyScriptEngine`对象: ```java import groovy.lang.GroovyShell; import groovy.lang.Script; GroovyShell shell...

    Spock是适合Java和Groovy应用程序的一个测试框架

    Java开发者可以利用Spock框架来提升他们的测试实践,尤其是在使用Spring框架或者其他Groovy兼容的技术栈时,Spock能提供更好的集成和测试体验。 在文件名"spockframework-spock-a22b23a"中,我们可以推测这可能是...

    Groovy大量计算导致oom的解决办法

    下载的资源文件中,封装了并发计算以及内存溢出解决方案的工具类GroovyEngine.java,调用示例: GroovyEngine engine = GroovyEngine.getInstance(); engine.put("a",1); engine.put("b",2); Object v1 = engine....

    hugo110-java_run_groovy-master_java_

    - **GroovyObject接口**:Groovy类自动实现`GroovyObject`接口,这使得Java可以调用Groovy对象的方法。 2. **Groovy的优势**: - **动态性**:Groovy支持动态类型,这意味着变量的类型可以在运行时改变,这在编写...

    Java Groovy

    - **兼容性**:Groovy不仅支持Java类库,还能直接调用Java代码,这为开发者提供了一种在不改变现有Java环境的情况下引入新特性的途径。 - **灵活性**:Groovy支持元编程系统(MPS)和运行时注入(RTI),使得...

    Groovy+Java混合使用例子

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

    Groovy MOP

    在Java中,我们通常需要通过继承或接口实现来扩展功能,但Groovy的MOP允许我们在运行时动态地改变对象的行为,使得代码更加灵活和动态。 Groovy的MOP机制主要包括以下几个关键概念: 1. **MetaClass**: MetaClass...

    groovy速查手册

    这样做的好处在于,你可以像使用Java代码一样使用Groovy代码,无需担心兼容性问题。 - **从Groovy调用Java**:Groovy完全支持调用任何Java代码,就像在Java中一样直接使用。 - **从Java调用Groovy**:在Java中调用...

    java 动态脚本语言 精通 Groovy

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

    JGSK, Java,Groovy,Scala,Kotlin 四种语言的特点对比.zip

    Java、Groovy、Scala和Kotlin是四种在Java平台上广泛使用的编程语言,它们各自具有独特的特点和优势。这里我们将深入探讨这四种语言的核心特性,并对比它们在实际开发中的应用。 首先,Java作为最古老的成员,自...

    java_groovy_python集合

    Java和Groovy在企业级应用开发中广泛使用,而Python因其简洁和易学性在数据分析、自动化脚本和机器学习等领域大放异彩。 标签中的“java”,“python”,“groovy”进一步强调了这三个主题的重要性。 压缩包子文件...

    groovy programming(2006.12).pdf

    由于Groovy与Java的高度兼容性,本书特别强调了如何在Java项目中使用Groovy脚本或Groovy类。这包括如何在Java代码中调用Groovy脚本,以及如何在Groovy中调用Java类库。这种集成能力使得Groovy可以作为Java项目的脚本...

    Java/groovy脚本程序调用被测试应用bean

    脚本通过上下文applicationcontext获取被测试应用bean,从而可以进行接口内容获取等操作。目前该方式主要运用到性能平台脚本搭建、代码深度测试、接口测试、白盒测试等多方面。...支持Java、groovy脚本。

Global site tag (gtag.js) - Google Analytics