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、定义Java接口包含在Java中需要调用的Groovy方法
- public interface IFoo {
- public Object run(Object foo);
- }
-
- 2、创建Groovy类实现该接口
- class Foo implements IFoo {
-
- public Object run(Object foo) {
- println 'Hello World!'
- x = 123
- foo * 10
- }
- }
-
- 3、动态载入Groovy类,创建接口实例,调用接口中定义的方法
- import groovy.lang.GroovyClassLoader;
-
-
-
- import java.io.File;
-
-
-
- public class InvokeGroovy {
-
- public static void main(String[] args) {
-
- ClassLoader cl = new InvokeGroovy().getClass().getClassLoader();
-
- GroovyClassLoader groovyCl = new GroovyClassLoader(cl);
-
- try {
-
- Class groovyClass = groovyCl.parseClass(new File("src/Foo.groovy"));
-
- IFoo foo = (IFoo) groovyClass.newInstance();
-
- System.out.println(foo.run(new Integer(2)));
-
- } catch (Exception e) {
-
- e.printStackTrace();
-
- }
-
- }
-
- }
分享到:
相关推荐
总的来说,Java调用Groovy并实时加载数据库中的Groovy脚本是一种强大而灵活的解决方案,特别适用于需要频繁调整业务逻辑或进行热部署的场景。通过结合Java的稳定性和Groovy的动态性,我们可以构建出更适应变化的系统...
本文将深入探讨在Java项目中使用Groovy的三种主要方式,并阐述它们各自的优势和应用场景。 一、作为嵌入式脚本 Java 6引入了JSR 223(Scripting for the Java Platform),允许在Java程序中直接执行脚本语言。...
这是一种跨语言交互的方式,特别是在混合使用Groovy和Java的项目中非常常见。 Groovy调用Java类相当直观。首先,你需要在Groovy脚本中使用`import`语句导入你想要使用的Java类。例如,如果要使用`java.util.Random`...
SpringBoot、Gradle、Maven、Java和Groovy是Java生态...- 在测试和配置管理中使用Groovy,如Spock测试框架和Grails配置。 理解并熟练掌握这些技术,有助于提升Java开发者的专业技能,更好地适应现代企业级开发的需求。
首先,我们来看Java调用Groovy的情况。在示例中,我们定义了一个Groovy类`GroovyBean`,它包含一个字段`name`,一个构造函数,一个`calc`方法和一个静态的`hello`方法。在Java类`JavaCallGroovy`中,我们可以直接...
Jenkins Pipeline 调用 shell、python、java、groovy 脚本的正确使用姿势 Jenkins Pipeline 是一个强大的自动化工具,可以帮助开发者自动化构建、测试和部署流程。在设计 Pipeline 脚本的过程中,经常会遇到调用...
在Java项目中,使用Groovy通常更加方便,因为不需要额外的引擎,可以直接创建`GroovyShell`或`GroovyScriptEngine`对象: ```java import groovy.lang.GroovyShell; import groovy.lang.Script; GroovyShell shell...
下载的资源文件中,封装了并发计算以及内存溢出解决方案的工具类GroovyEngine.java,调用示例: GroovyEngine engine = GroovyEngine.getInstance(); engine.put("a",1); engine.put("b",2); Object v1 = engine....
- **GroovyObject接口**:Groovy类自动实现`GroovyObject`接口,这使得Java可以调用Groovy对象的方法。 2. **Groovy的优势**: - **动态性**:Groovy支持动态类型,这意味着变量的类型可以在运行时改变,这在编写...
- **兼容性**:Groovy不仅支持Java类库,还能直接调用Java代码,这为开发者提供了一种在不改变现有Java环境的情况下引入新特性的途径。 - **灵活性**:Groovy支持元编程系统(MPS)和运行时注入(RTI),使得...
Groovy环境搭建教程中的例子工程,纯Java、纯Groovy以及Java+Groovy混合 教程参考:http://blog.csdn.net/rcom10002/archive/2011/06/26/6568557.aspx
在Java中,我们通常需要通过继承或接口实现来扩展功能,但Groovy的MOP允许我们在运行时动态地改变对象的行为,使得代码更加灵活和动态。 Groovy的MOP机制主要包括以下几个关键概念: 1. **MetaClass**: MetaClass...
这样做的好处在于,你可以像使用Java代码一样使用Groovy代码,无需担心兼容性问题。 - **从Groovy调用Java**:Groovy完全支持调用任何Java代码,就像在Java中一样直接使用。 - **从Java调用Groovy**:在Java中调用...
9. **Scripting in Java Applications**:Groovy可以嵌入到Java应用中作为脚本语言使用,例如在服务器端处理HTTP请求,或者作为配置文件来动态改变应用行为。 10. **持续集成与构建工具**:Groovy也是构建工具如...
Java和Groovy在企业级应用开发中广泛使用,而Python因其简洁和易学性在数据分析、自动化脚本和机器学习等领域大放异彩。 标签中的“java”,“python”,“groovy”进一步强调了这三个主题的重要性。 压缩包子文件...
Java、Groovy、Scala和Kotlin是四种在Java平台上广泛使用的编程语言,它们各自具有独特的特点和优势。这里我们将深入探讨这四种语言的核心特性,并对比它们在实际开发中的应用。 首先,Java作为最古老的成员,自...
由于Groovy与Java的高度兼容性,本书特别强调了如何在Java项目中使用Groovy脚本或Groovy类。这包括如何在Java代码中调用Groovy脚本,以及如何在Groovy中调用Java类库。这种集成能力使得Groovy可以作为Java项目的脚本...
脚本通过上下文applicationcontext获取被测试应用bean,从而可以进行接口内容获取等操作。目前该方式主要运用到性能平台脚本搭建、代码深度测试、接口测试、白盒测试等多方面。...支持Java、groovy脚本。
在Java项目中使用Groovy,可以利用其灵活性和生产力优势,同时保持与现有Java代码库的兼容性。 为了使Maven能够处理Groovy源码,我们需要在`pom.xml`中添加Groovy Maven插件,例如`groovy-maven-plugin`。该插件会...