Guice指南-架构概览

Guice 是 Google 用于 Java™ 开发的开放源码依赖项注入框架。它不需要您自己编写工厂,从而提供更好的测试性和模块性。我们可以将 Guice 的架构分成两个不同的阶段:启动和运行。你在启动时创建一个注入器 Injector,在运行时用它来注入对象。

启动
你通过实现 Module 来配置 Guice。你传给 Guice 一个模块对象,Guice 则将一个绑定器 Binder 对象传入你的模块,然后,你的模块使用绑定器来配置绑定。一个绑定通常包含一个从接口到具体实现的映射。例如:

public class MyModule implements Module {
  public void configure(Binder binder) {
    // Bind Foo to FooImpl. Guice will create a new
    // instance of FooImpl for every injection.
    binder.bind(Foo.class).to(FooImpl.class);
    // Bind Bar to an instance of Bar.
    Bar bar = new Bar();
    binder.bind(Bar.class).toInstance(bar);
  }
}
在这个阶段,Guice 会察看你告诉它的所有类,以及任何与这些类有关系的类,然后通知你是否有依赖关系的缺失。例如,在一个 Struts 2 应用中,Guice 知道你所有的动作类。Guice 会检查你的动作类以及它们依赖的所有类,如果有问题会及早报错。

创建一个 Injector 涉及以下步骤:
  1. 首先创建你的模块类实例,并将其传入 Guice.createInjector().
  2. Guice 创建一个绑定器 Binder 并将其传入你的模块。
  3. 你的模块使用绑定器来定义绑定。
  4. 基于你所定义的绑定,Guice 创建一个注入器 Injector 并将其返回给你。
  5. 你使用注入器来注入对象。
运行
现在你可以使用第一阶段创建的注入器来注入对象并内省(introspect)我们的绑定了。Guice 的运行时模型由一个可 管理一定数量绑定的注入器组成。
 
键 Key 唯一地确定每一个绑定。 Key 包含了客户代码所依赖的类型以及一个可选的标注。你可以使用标注来区分指向同一类型的多个绑定。 Key 的类型和标注对应于注入时的类型和标注。

每个绑定有一个提供者 provider,它提供所需类型的实例。你可以提供一个类,Guice 会帮你创建它的实例。你也可以给 Guice 一个你要绑定的类的实例。你还可以实现你自己的 provider,Guice 可以向其中注入依赖关系。

每个绑定还有一个可选的作用域。缺省情况下绑定没有作用域,Guice 为每一次注入创建一个新的对象。一个定制的作用域可以使你控制 Guice 是否创建新对象。例如,你可以为每一个  HttpSession 创建一个实例。

 

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值