3

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

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

但是,这会导致模块 B 中的绑定异常,因为 guice 尝试在未绑定这些依赖项的模块 B 中重新注入“usecaseFactories”成员。

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

4

1 回答 1

3

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

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

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

自动注射

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

  • toInstance()在绑定语句中传递给的实例
  • 在绑定语句中传递给提供者实例toProvider()在创建注入器本身时将注入对象。如果需要它们来满足其他启动注入,Guice 会在使用它们之前注入它们。
于 2016-05-22T21:24:48.773 回答