欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

初次接触groovy GroovyRubySpringBeanBlog 

程序员文章站 2022-03-11 09:37:58
...
 项目算完成了,等测试报告出来的时间里玩玩groovy,不玩不知道,一玩吓一跳,groovy与ruby好象啊。
看看下面的代码:
初次接触groovy
            
    
    
        GroovyRubySpringBeanBlog ruby:
初次接触groovy
            
    
    
        GroovyRubySpringBeanBlog [
1,2,3,4,5,6,7].inject(0){|sum,i| sum+=i}

初次接触groovy
            
    
    
        GroovyRubySpringBeanBlog groovy:
初次接触groovy
            
    
    
        GroovyRubySpringBeanBlog 
初次接触groovy
            
    
    
        GroovyRubySpringBeanBlog [
1,2,3,4,5,6,7].inject(0){sum,-> sum+=i}


ruby的closures与groovy的closures机制几乎完全一样,除了符号改变之外。有兴趣的话看看这个:
http://groovy.codehaus.org/Tutorial+2+-+Code+as+data%2C+or+closures

如果说groovy有什么优点的话,就是它可以直接利用java丰富的类库,实在爽:
初次接触groovy
            
    
    
        GroovyRubySpringBeanBlog //readFile.groovy
初次接触groovy
            
    
    
        GroovyRubySpringBeanBlog myFileName 
= "E://groovy//readFile.groovy"
初次接触groovy
            
    
    
        GroovyRubySpringBeanBlog myFile 
= new File( myFileName)
初次接触groovy
            
    
    
        GroovyRubySpringBeanBlog printFileLine 
= { println "File line: " + it }
初次接触groovy
            
    
    
        GroovyRubySpringBeanBlog myFile
.eachLine( printFileLine )


语法层面没什么好谈的,我更希望了解下groovy在实际应用中的表现,IBM的develper works上面有个实战groovy系列,值的好好读读

补充下,在spring中调用groovy beans的方法:
首先需要一个java接口,比如:

初次接触groovy
            
    
    
        GroovyRubySpringBeanBlog package com.sohu.blog.dennis_zane.springdemo.scripting;
初次接触groovy
            
    
    
        GroovyRubySpringBeanBlog 
初次接触groovy
            
    
    
        GroovyRubySpringBeanBlog public interface Calculator {
初次接触groovy
            
    
    
        GroovyRubySpringBeanBlog    
int add(int x,int y);
初次接触groovy
            
    
    
        GroovyRubySpringBeanBlog }
初次接触groovy
            
    
    
        GroovyRubySpringBeanBlog 
初次接触groovy
            
    
    
        GroovyRubySpringBeanBlog 然后是Groovy bean
:
初次接触groovy
            
    
    
        GroovyRubySpringBeanBlog 
//GroovyCalculator.groovy
初次接触groovy
            
    
    
        GroovyRubySpringBeanBlog 
package com.sohu.blog.dennis_zane.springdemo.scripting;
初次接触groovy
            
    
    
        GroovyRubySpringBeanBlog class GroovyCalculator implements Calculator{
初次接触groovy
            
    
    
        GroovyRubySpringBeanBlog   
int add(int x, int y){
初次接触groovy
            
    
    
        GroovyRubySpringBeanBlog       x
+y    
初次接触groovy
            
    
    
        GroovyRubySpringBeanBlog   }
初次接触groovy
            
    
    
        GroovyRubySpringBeanBlog }
初次接触groovy
            
    
    
        GroovyRubySpringBeanBlog 

在spring配置文件中配置:

初次接触groovy
            
    
    
        GroovyRubySpringBeanBlog <lang:groovy id="calculator" script-source="classpath:/com/sohu/blog/dennis_zane/springdemo/scripting/GroovyCalculator.groovy"/>


调用的话跟使用一般的bean没什么不同:

初次接触groovy
            
    
    
        GroovyRubySpringBeanBlog Calculator calculator=(Calculator)ctx.getBean("calculator");
初次接触groovy
            
    
    
        GroovyRubySpringBeanBlog 
System.out.println(calculator.add(100, 20));

也许随着groovy性能的提升,将业务层完全由动态语言来实现不是没有可能。