从JDK开始Java就拥有了一种新特性Annotations想必Java老手们对它并不陌生吧在各大框架比如SpringHibernate等中均提供了自己的Annotations供大家使用Java+使用Annotations是十分平常的事情因为Annotations本身就是Java的一种特性但基于Java的动态语言要使用Annotations就比较困难了目前只有Groovy能够做到这点 接下来以使用Guice为例看一下在Groovy中如何使用Annotations其实跟在Java中使用Annotations没什么两样 :) 注意请将guicejar和aopalliancejar加到classpath中如果您嫌麻烦可以将这两个Jar文件放到<GROOVY_HOME>\lib目录下 import comgoogleinject *interface LoginService {boolean check(String name String password)}@Singletonclass LoginServiceImpl implements LoginService {boolean check(String name String password) {if (name == Daniel && password == ) {return true}return false}}class LoginController {@Injectprivate LoginService loginServicepublic void setLoginService(LoginService loginService) {this loginService = loginService}public void execute() {String name = Daniel String password = login(name password)}public void login(String name String password) {boolean result = loginServicecheck(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) {binderbind(LoginService)to(LoginServiceImpl)in(ScopesSINGLETON)}}def loginInjector = GuicecreateInjector( new LoginModule())def loginController = loginInjectorgetInstance(LoginController)loginControllerexecute() 运行结果 Welcome Daniel |