Guice指南-架构概览

上一篇 / 下一篇  2008-03-21 17:22:34 / 个人分类:Guice

架构概览
我们可以将 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 创建一个实例。

TAG:

 

评分:0

我来说两句

显示全部

:loveliness: :handshake :victory: :funk: :time: :kiss: :call: :hug: :lol :'( :Q :L ;P :$ :P :o :@ :D :( :)

日历

« 2009-07-05  
   1234
567891011
12131415161718
19202122232425
262728293031 

数据统计

  • 访问量: 45405
  • 日志数: 171
  • 影音数: 3
  • 建立时间: 2008-02-28
  • 更新时间: 2008-05-19

RSS订阅

Open Toolbar