我在多模块项目中有多个注入器,并希望将已经注入的实例从模块A传递到另一个Guice模块B:
//module B
bind(DeleteEmployeeUseCaseFactory.class).toInstance(useCaseFactories);
//usecaseFactories comes from module A, and already injected
然而,这导致模块B中的绑定异常,因为guice尝试在moduleB中重新注入“usecaseFactories”成员,其中这些依赖项没有绑定。
为什么guice尝试注入给定实例的成员,以及如何避免这种情况?
答案 0 :(得分:2)
我解决了以避免使用Provider注入实例已注入的成员:
bind(DeleteEmployeeUseCaseFactory.class).toProvider(Providers.of(useCaseFactories));
然而,这是guice的预期行为,如here所述:
Guice会自动注入以下所有内容:
toInstance()
toProvider()
的提供程序实例
在创建进样器本身时将注入对象。如果他们需要满足其他初始注射,Guice会在使用前注射它们。