java与Groovy的整合(II)

 
  • Groovy与流行框架的集成

1.与Spring的集成

现在Spring的核心包就提供了与Groovy的集成了,,很好,很强大,这样就可以显示业务逻辑的动态改变了

由于Groovy的代码中也有描述Java代码的机制,因此两者合用非常容易
Spring Bean:


代码
class="org.springframework.beans.factory.groovy.GroovyFactory">
20


下面是groovy的例子:

代码
factory-bean="groovyScriptFactory"
factory-method="create">

SimpleHello.groovy


groovy文件:

代码
package org.springframework.beans.factory.groovy;

class Test implements Hello {

String sayHello() {
"hello world"
}
}

2.与webwork的集成

在WebWork2中,可以使用Groovy实现Action类来简化代码,提高编码效率

例子:

package web

import java.util.Date

import org.apache.commons.logging.Log
import org.apache.commons.logging.LogFactory

import com.opensymphony.xwork.ActionSupport

class GroovyAction extends ActionSupport {

protected final Log logger = LogFactory.getLog(getClass())

private String now

String execute() {
now = "${new Date()}"
logger.info("returning view with ${now}")

"success"
}

void setNow(String now) {
this.now = now
}

String getNow() {
now
}

}

上面的Action类是Groovy类,同样扩展ActionSupport,这里要注意:

execute()方法没有throws Exception语句,这是因为目前的Groovy还没有这个Java特性,这需要在以后的版本中增加;如果添加,编译会报错

execute()方法返回时,不要使用类似SUCCESS的常量,而是用对应的值(如"success");如果使用SUCCESS,Groovy会把它解析成类的属性,抛异常

当然,在/WEB-INF/lib目录下需要包含运行以依赖的jar文件:Groovy和ASM.

首先强烈遣责water ye同学不负责任的行为,那家伙在blog上贴了一段spring 2.0m2的test代码就了事,居然不测试一下,结果俺的spring groovy test代码折腾半天才过去。

测试代码俺就不贴了,spring的配置就够了

1  <? xml version="1.0" encoding="GBK" ?>
 2  <! DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN//EN" 
 3      "http://www.springframework.org/dtd/spring-beans.dtd" >
 4  < beans >
 5       < bean  class ="org.springframework.scripting.support.ScriptFactoryPostProcessor"   />
 6       < bean  id ="inlineMessenger"  class ="org.springframework.scripting.groovy.GroovyScriptFactory" >
 7           < constructor-arg >
 8               < value > inline:
 9                      package spring.groovy;
10                      
11                      class GroovyInlineMessenger  implements Messenger{
12                          void sayHello(){
13                              System.err.println("Hello");
14                          }
15                      }
16               </ value >
17           </ constructor-arg >
18       </ bean >
19       < bean  id ="messenger"  class ="org.springframework.scripting.groovy.GroovyScriptFactory" >
20           < constructor-arg  value ="classpath:spring/groovy/GroovyMessenger.groovy"   />
21           < property  name ="message"  value ="Hello World!"   />
22       </ bean >
23  </ beans >


1、第5行的bean定义一定要有,估计是提前编译groovy脚本的(具体的可能啃一下源码就明白了)。
2、inlineMessenger这个bean的定义,inline一定要紧跟着<value>写,我为了美观,弄成下面两种写法都没过去。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值