有关Dagger在注入依赖项时何时回归反射的文档?

use*_*439 5 android dependency-injection dagger

我的团队在我们的Android应用程序中采用了Dagger进行依赖注入,我必须说我们喜欢它到目前为止.但是,我们希望确保我们有效地使用它.我想知道是否有人可以解释或者是否有任何文档解释Dagger为注入依赖关系而反思的情况?

Chr*_*ber 9

Dagger的后备逻辑嵌入在FailoverLoader类中.它曾经无法为给定模块加载ModuleAdapter时进行故障转移,但如果无法加载ModuleAdapter,则最新版本将失败并显示错误.

目前,如果Dagger找不到需要注入的给定类型的InjectAdapter类,它将进行故障转移.最常见的情况是,您有一个可注入类型的抽象父级,它没有@Inject字段.在这种情况下,不会为它创建InjectAdapter,因此当加载具体的可注入类型时,它会尝试查找父节点的适配器,找不到它,并创建一个反射替代.

类似地,如果没有对使用@Inject字段或构造函数修饰的类运行代码生成,Dagger也将回退到那些反射.它与上面的继承案例的逻辑完全相同,只是继承是唯一不会因无法运行代码生成而导致的情况.

顺便说一句,http://github.com/google/dagger上的Google fork 目前生成的处理父类型的适配器无需查找父级适配器(硬编码的父适配器),因此不会发生此故障转移在谷歌叉.我们还没有将google fork发布到maven,因为它直到最近才几乎完全相同,但如果父类中的故障转移逻辑存在问题,您可能希望提交问题并要求发布.