【问题标题】:Dagger field injection and entry pointsDagger 字段注入和入口点
【发布时间】:2013-10-06 01:17:20
【问题描述】:

我正在我的一个项目中尝试使用匕首,我遇到了这种情况: “字段注入仅在我将类声明为模块定义中的入口点时才有效。”

这是正确的行为吗?

如果 Messenger.class 未声明为入口点,则以下依赖项不会注入到 Messenger 类中。构造函数注入器工作正常,但我不想声明多参数构造函数。

public class Messenger implements NetworkInterfaceListener {
  @Inject public NetworkInterface networkInterface;
  @Inject public MessageFactoryInterface messageFactory;
  @Inject public Bus bus;
  @Inject public Logger log;
  ...
  ...
}

【问题讨论】:

    标签: dependency-injection dagger


    【解决方案1】:

    您只有两种选择:要么声明所有要注入的参数的可注入构造函数,要么将类加入 dagger 模块的entryPoints(现在称为injects)并在默认构造函数中调用mGraph.inject(this)(或者每当您甚至需要在课堂之外“注入”)。

    【讨论】:

    • 另外,根据dagger 站点,“如果您的模块的绑定将在列出的注入之外使用,则将该模块标记为库”,使用@Module(library = true) 注释
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-10-24
    • 2019-11-28
    • 2020-02-25
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多