Guice 中的依赖注入

  • 本文关键字:注入 依赖 Guice guice
  • 更新时间 :
  • 英文 :

public class N extends R {
    private final A a;
    private B b;
    @Inject
    N(@Assisted final A a, final B b) {
        a= a;
        b= b;
    }
}

我对此的理解是我将提供的参数"a",Guice 依赖注入器将负责正确注入"b"?我是否需要添加任何注释才能使guice能够注入"b",如何注入"b"?

Guice 将根据您在Module中的配置方式注入B。除了@Inject(您已经拥有(之外,您不需要添加任何其他内容。下面是一个基于您的类构建的更完整的示例:

public class GuiceExample {
  static class N {
    private final A a;
    private B b;
    @Inject
    N(@Assisted final A a, final B b) {
      this.a = a;
      this.b = b;
    }
  }
  static class A {}
  static class B {}
  static interface NFactory {
    public N create(A a);
  }
  static class Module extends AbstractModule {
    @Override 
    protected void configure() {
      install(new FactoryModuleBuilder().implement(A.class, A.class).build(NFactory.class));
      bind(B.class); // Or however you want B to be bound...
    }
  }
  @Test
  public void test() {
    Injector i = Guice.createInjector(new Module());
    N n = i.getInstance(NFactory.class).create(new A());
  }
}

您应该根据需要在configure方法中绑定B。你会NFactory注入到需要从A产生N s的类中。

最新更新