GoogleGuice试用

       日前Google推出了他自己的轻量级依赖注入(dependency inject)框架——Guice。Guice依靠Java新的Annotation特性,取代了XML的配置,并提供了灵活的注入方法,可以注入到成员、参数、方法等多个位置。在它的官方页面上有一份新手入门的文档,另外可以获取相关信息的就是两个人的blog链接。

        初步试用了一下,感觉Guice的Annotation机制和Spring的XML配置功能上基本是完全等价的,只是一个是写在代码中,一个是写在配置文件中,这个也是日前JavaEye上面关于Annotation的讨论的核心——Annotation的引入究竟是倒退还是进步?我对依赖注入及两个框架都还不是了解的非常透彻,不好妄加评论。

      下面就来说说Guice的试用感想:

      Guice的注入机制是靠Binder、Injector、Module等类来实现的。开发者实现Module这个接口,编写他的configure(Binder binder)方法。这个方法的功效相当于Spring中用于配置的XML文件,它通过系统传递过来的参数binder进行注入规则的说明。基础的方法链就像是这个样子:

    binder.bind(Service.class).to(ServiceImpl.class)

    上面这条指令声明了用ServiceImpl来注入需要Service的地方。

    @Inject
     public void setService(Service service){
       this.service = service;
    }

   注意到@Inject这个Annotation就是告诉Guice,这里需要注入。

   另外,你还可以在不同的地方将同一个类注入为不同的实现,这需要借助额外Annotation的帮助:

   binder.bind(Person.class).annotatedWith(Husband.class).to(Man.class)

    这个绑定的声明将下面情况下的Person绑定为Man类型

    private @Inject @Husband Person husband;

   编辑好你自己的Module之后,注入的规则就创建完毕了。在需要注入的地方添加@Inject。Guice的工作原理从这张图里可以看的很清楚:

File?id=dd2fhx4z_29f8h7x7
    这样获得Injector之后,调用injector.getInstance(Class clazz)可以得到实体

Injector injector = Guice.createInjector(new MyModule());

    我的这个例子和webapp完全没有关系,只是试验了一下Guice的依赖注入过程,真正的web使用应该是没有手动获取Injector的过程的。TestGuiceGoogle.rar
 


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值