当创建一个注入器来创建一个对象时,我们是否需要为其间接依赖项包含模块?
例如,在下面的代码中,我们应该如何在main()中创建注入器?
public class Foo {
private Bar bar;
@Inject
public Foo(Bar bar) {
this.bar = bar;
}
public static void main(String[] argv) {
Injector injector = Guice.getInjector(new BarModule());
// or Injector injector = Guice.getInjector(new BarModule(), new BarDepModule());
Foo foo = injector.getInstance(Foo.class);
}
}
//=====================
public interface Bar {}
public class BarImp {
private BarDep barDep; // Dependency of Bar
@Inject
public Bar(BarDep barDep) {
this.barDep = barDep;
}
}
//=====================
当然,BarDep应该有绑定。问题是我们应该明确加载BarDepModule还是应该由BarModule负责呢?
答案 0 :(得分:0)
答案 1 :(得分:0)
是的,这正是策略。使用最高级别的模块安装依赖项可以清楚地了解服务器/应用程序的配置方式。这有助于读者了解服务器的配置方式,并消除潜在的绑定冲突(如Nacho示例所示)。演示文稿的幻灯片位于:http://bit.ly/BigGuice2011