Guice bind()。toInstance()注入已注入的成员?

时间:2016-05-22 16:34:10

标签: java guice guice-3

我在多模块项目中有多个注入器,并希望将已经注入的实例从模块A传递到另一个Guice模块B:

//module B    
bind(DeleteEmployeeUseCaseFactory.class).toInstance(useCaseFactories);
//usecaseFactories comes from module A, and already injected

然而,这导致模块B中的绑定异常,因为guice尝试在moduleB中重新注入“usecaseFactories”成员,其中这些依赖项没有绑定。

为什么guice尝试注入给定实例的成员,以及如何避免这种情况?

1 个答案:

答案 0 :(得分:2)

我解决了以避免使用Provider注入实例已注入的成员:

bind(DeleteEmployeeUseCaseFactory.class).toProvider(Providers.of(useCaseFactories));

然而,这是guice的预期行为,如here所述:

自动注射

Guice会自动注入以下所有内容:

  • 实例在绑定语句中传递给toInstance()
  • 在绑定语句中传递给toProvider()的提供程序实例 在创建进样器本身时将注入对象。如果他们需要满足其他初始注射,Guice会在使用前注射它们。