Groovy - 舍与得

宣布一下,开始关注Groovy,被某个人抨击了,说竟然不知道动态语言,晕。一google,跳出一个熟悉的blog:江南白衣,这小子,哪儿都有你啊:) ,白衣的风格是忽悠为主,走的是透明的路子(不过偶喜欢:) 另一个有用的是  http://blog.csdn.net/chenyun2000/category/42948.aspx ,这个兄弟作了详实的工作。
        经过扫盲,近于伪码的语法风格有所了解了(闭包,不错),它牺牲部分性能和健壮性,换来开发效率的提升,
     准备工作:
     Eclipse 3.1或更高版本, Groovy ide plugin(安装方法见 chenyun 的blog,直接上cvs上check out 然后发布为plugin), spring-sandbox.jar (这个提供了对groovy script的支持)


    关于它的用途现在主要是两方面:
   1. 单元测试,我自己原先有一个基类的BaseServiceTest了(注,我没有dao),主要是作两件事,一是用DbUnit 维持数据库中测试数据,二是让protected的被测实例可以自动由容器注入(能见spring-mock.jar的介绍),我新建一个GroovyServiceTest,使其扩展我的BaseTest,然后,打开Run菜单,在Java Application下添加一个主类,设为 groovy.util.GroovyTestSuite ,到第二页将被测的groovy文件加入,直接运行即可,当然你也可以用ant或maven来自动化地执行测试集,这些可以详见  http://www-128.ibm.com/developerworks/cn/java/j-pg11094/?ca=dwcn-newsletter-java

运行成功。这里有一个困惑的地方是,编辑器在我的UserManagerGroovyTest.groovy文件中显示了一个错误,一个醒目的红x,晕,no such class: com.xxx.BaseServiceTest ,我可都已经执行成功了呀,哎。希望groovy IDE快点升级,fix bug,造福乡里。
 
 2. 业务逻辑,可以看白衣的“那一吨的好处:)"?针对service接口,来一个Groovy的实现,至于spring怎么整合它们,看这一篇: http://www.javaeye.com/viewtopic.php?t=6902
   
   <bean id="groovyScriptFactory"
      class="org.springframework.beans.factory.script.groovy.GroovyScriptFactory">
      <property name="expirySeconds"><value>20</value></property>     
   </bean>

   <bean id="helloService"
      factory-bean="groovyScriptFactory"
      factory-method="create">
      <constructor-arg index="0">
         <value>classpath:/demo/HelloWorldImpl.groovy</value>
      </constructor-arg>
   </bean>

   一开始总报错,经过检查,原先用的是spring-1.2.4,退至spring 1.x版本后,正常通过。这里提一下,我用的spring-sandbox.jar是appfuse1.7带的,它是适配spring1.x的,你可以直接上cvs仓库,从/spring/sandbox 路径 check out最后的版本,自己编译,这样就可以适应最新的spring版本了。
  
    结论 :  对于易变的业务逻辑,用最接近自然语言的方式进行书写,免去部署的成本,提升开发效率,此谓“得”,失去的有:不好debug,IDE支持程度差(这个抵消一部分效率优势),性能的损害。如果将业务类全部采用groovy来写,需要较大的勇气,将其引入单元测试的编写是非常吸引人的实践,准备试推行一下。最近正在看《程序员修炼之道-从小工到专家》一书,提及投资自 “知识资产”,建议每个程序员不要墨守一门语言,通过Groovy的学习可以有效拓宽你的思路,是一些古旧Java程序员的冲出井沿的好绳索,Groovy毕竟和Java天生存在极其暖昧的关系:) 希望他尽快完善壮大,成为我们日常工具箱的一部分。


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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值