从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