First they ignore you
then they ridicule you
then they fight you
then you win
    -- Mahatma Gandhi
Chinese => English     英文 => 中文             
随笔-219  评论-1047  文章-0  trackbacks-0
从JDK1.5开始,Java就拥有了一种新特性——Annotations,想必Java老手们对它并不陌生吧,在各大框架比如Spring、Hibernate等中均提供了自己的Annotations供大家使用,Java5+使用Annotations是十分平常的事情,因为Annotations本身就是Java的一种特性,但基于Java的动态语言要使用Annotations就比较困难了,目前只有Groovy能够做到这点。

接下来以使用Guice为例,看一下在Groovy中如何使用Annotations,其实跟在Java中使用Annotations没什么两样 :)


注意:请将guice-1.0.jar和aopalliance.jar加到classpath中。如果您嫌麻烦,可以将这两个Jar文件放到<GROOVY_HOME>\lib目录下。

import  com.google.inject. *

interface  LoginService {
    
boolean  check(String name, String password)
}

@Singleton
class  LoginServiceImpl  implements  LoginService {
    
boolean  check(String name, String password) {
        
if  (name  ==   " Daniel "   &&  password  ==   " 123456 " ) {
            
return   true
        }
        
        
return   false
    }
}

class  LoginController {
    @Inject
    
private  LoginService loginService
    
    
public   void  setLoginService(LoginService loginService) {
        
this .loginService  =  loginService
    }
    
    
public   void  execute() {
        String name 
=   " Daniel "
        String password 
=   " 123456 "
        
        login(name, password)
    }
    
    
public   void  login(String name, String password) {
        
boolean  result  =  loginService.check(name, password)
        
        
if  (result) {
            println 
" Welcome, $name "
        } 
else  {
            println 
" Sorry, the name or password inputted is invalid! "
        }
    }
}

class  LoginModule  implements  Module {
    
void  configure(Binder binder) {
        binder.bind(LoginService)
            .to(LoginServiceImpl)
            .in(Scopes.SINGLETON)
    }
}

def loginInjector 
=  Guice.createInjector( new  LoginModule())

def loginController 
=  loginInjector.getInstance(LoginController)
loginController.execute()

运行结果:
Welcome, Daniel

关于Guice的使用请参考Guice的用户指南。

最后祝全天下的光棍们,光棍节快乐 :)

附:朝花夕拾——Groovy & Grails

posted on 2007-11-11 17:37 山风小子 阅读(2495) 评论(0)  编辑  收藏 所属分类: Groovy & Grails