从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
山风小子 阅读(2771)
评论(0) 编辑 收藏 所属分类:
Groovy & Grails