gpt4 book ai didi

java - Guice bind().toInstance() 注入(inject)已经注入(inject)的成员?

转载 作者:行者123 更新时间:2023-12-03 23:05:45 30 4
gpt4 key购买 nike

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

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

然而,这会导致模块 B 中出现绑定(bind)异常,因为 guice 会尝试在模块 B 中重新注入(inject)“usecaseFactories”成员,而这些依赖项未绑定(bind)。

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

最佳答案

我通过使用 Provider 解决了避免注入(inject)实例的已注入(inject)成员的问题:

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

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

自动注入(inject)

Guice 自动注入(inject)以下所有内容:

  • 在绑定(bind)语句中传递给 toInstance() 的实例
  • provider 实例在绑定(bind)语句中传递给 toProvider()在创建注入(inject)器本身时将注入(inject)对象。如果需要它们来满足其他启动注入(inject),Guice 会在使用它们之前注入(inject)它们。

关于java - Guice bind().toInstance() 注入(inject)已经注入(inject)的成员?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37376845/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com