我的团队在我们的 Android 应用程序中采用了 Dagger 进行依赖注入,我必须说到目前为止我们很喜欢它。然而,我们希望确保我们有效地使用它。我想知道是否有人可以解释或者是否有任何文档解释 Dagger 回退到反射来注入依赖项的情况?
Dagger 的后备逻辑嵌入在其 FailoverLoader 类中。它过去常常在无法加载给定模块的 ModuleAdapter 时进行故障转移,但如果无法加载 ModuleAdapter,最新版本将失败并出现错误。
目前,如果 Dagger 找不到需要注入的给定类型的 InjectAdapter 类,则会进行故障转移。最常见的情况是当您有可注入类型的抽象父级时,它没有 @Inject 字段。在这种情况下,不会为其创建 InjectAdapter,因此当加载具体的可注入类型时,它会尝试查找父级的适配器,但找不到适配器,因此会创建一个反射替身。
类似地,如果不针对用 @Inject 字段或构造函数修饰的类运行代码生成,Dagger 也会回退到这些类的反射。这实际上与上面的继承情况的逻辑相同,只是继承是唯一不是源于运行代码生成失败的情况。
顺便说一句,谷歌分叉于http://github.com/google/dagger http://github.com/google/dagger目前生成处理其父类型的适配器,而无需查找父适配器(硬编码父适配器),因此这种故障转移不会在 google fork 中发生。我们还没有将 google fork 发布到 maven,因为直到最近它几乎是相同的,但如果父类中的故障转移逻辑是一个问题,您可能希望提交问题并请求发布。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)