是否有关于 Dagger 在注入依赖项时何时回退到反射的文档?

2023-12-21

我的团队在我们的 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(使用前将#替换为@)

是否有关于 Dagger 在注入依赖项时何时回退到反射的文档? 的相关文章

随机推荐

  • XSD 验证 xs:date 和 xs:dateTime 的错误格式

    当我设置year如下所示的部分 20512 或类似的内容 XSD 仍然验证 XML 任何想法 这是一个缺陷还是我必须使用简单类型与给定的模式 Thanks XSD
  • 在 Yii 中,有没有办法使用 CActiveForm 验证表格输入?

    情况 我使用了 Yii 网站上的 wiki 文章 收集表格输入 http www yiiframework com doc guide 1 1 en form table 以如下为例 我不认为我需要针对多个模型验证传统意义上的表格输入 我只
  • 与静态库的链接不等于与其对象的链接

    Problem 与静态库链接时生成的固件映像与与直接从静态库中提取的对象链接时生成的固件映像不同 两个固件映像都没有错误地链接并成功加载到微控制器上 后一个二进制文件 与对象链接 按预期成功执行 而前一个二进制文件 链接到静态库 则不然 编
  • URLWithString:返回 nil

    这可能很容易 但我似乎不明白为什么URLWithString 在这里返回零 localisationName is a arbitrary string here NSString webName localisationName stri
  • jquery隐藏预加载[关闭]

    Closed 这个问题需要调试细节 help minimal reproducible example 目前不接受答案 这是我的页面http equipe94 com 2009e html http equipe94 com 2009e h
  • 为什么这个任务提前返回?我做错了什么吗?

    我正在尝试设置一群具有最小耦合的工作人员 但我想使用 C async和任务 并非所有任务都是纯异步的 有些任务是完全同步的 这样做的动机是我想创建一些执行业务逻辑的简单方法 并使用System Threading Tasks TaskAPI
  • 检测 Mac OS X 上的调试器

    我试图检测我的进程是否正在调试器中运行 在 Windows 中有很多解决方案 在 Linux 中我使用 ptrace PTRACE ME 0 0 0 并检查其返回值 我没有设法在 Mac OS X 上执行相同的基本检查 我尝试使用 ptra
  • 请解释一下使用 std::ignore 的这段代码

    我正在阅读有关的文档std ignore http en cppreference com w cpp utility tuple ignore来自 cppreference 我发现很难掌握这个对象的真正目的 并且示例代码并没有很好地说明这
  • 如何使用 RxJS 显示“用户正在输入”指示器?

    我了解一点 BaconJS 但现在我尝试通过创建 用户正在输入 指示器来学习 RxJS 这很简单 可以用两个简单的规则来解释 当用户打字时 指示器应该立即可见 当用户停止键入时 指示器应该仍然可见 直到用户最后一次键入操作后 1 秒 我不确
  • 矩阵的行主布局与列主布局

    在编程密集矩阵计算时 是否有任何理由选择行优先布局而不是列优先布局 我知道 根据所选矩阵的布局 我们需要编写适当的代码来有效地使用缓存以达到速度目的 行主布局看起来更自然 更简单 至少对我来说 但是像 LAPACK 这样用 Fortran
  • 使用 Oracle 11g 的 Oracle 开发人员虚拟机

    I found here http www oracle com technetwork community developer vm index html带有 Oracle DB 和 Oracle Linux 的 VirtualBox 的
  • 编辑RefineryCMS 2.1 Menu Presenter以操作dom_id css和其他属性

    我目前正在尝试从 gem 版本更新现有的 RefineryCMS 应用程序 以便我可以同时添加 bootstrap 3 gem refinerycms gt 2 0 10 to gem refinerycms gt 2 1 0 在删除过时的
  • IO异常:Oracle升级到12g后出现Oracle Error ORA-12650

    在我们的 Oracle DB 从 11g 升级到 12g 后 我们得到了下面的堆栈跟踪 Io exception Oracle Error ORA 12650 我该如何解决这个问题 2015 10 26 14 59 36 319 RMI T
  • 需要一个插入行并返回 ID 的存储过程

    我尝试编写一个存储过程 首先将新记录插入表中 然后返回该新记录的 id 我不确定这是否是实现这一目标的正确方法和最佳方法 ALTER PROCEDURE dbo spAddAsset Name VARCHAR 500 URL VARCHAR
  • minitest - 模拟 - 期望关键字参数

    当我想验证模拟是否发送了预期的参数时 我可以这样做 mock expect fnc nil a b 但是 如果我想模拟的课程看起来像这样 class Foo def fnc a b end end 我如何模拟它并验证传递的值a b 下面是我
  • 判断一个数是完美数还是素数

    问题是 编写一个函数来判断一个数是素数还是完全数 到目前为止 我已经首先完成了完美的部分 这就是我所拥有的 include
  • Excel 如何比较 2 列范围

    我正在尝试比较 Excel 中的两组列范围 我知道标准比较公式 Eg A1 E1 我正在寻找的是以下公式的替代品 AND A1 E1 B1 F1 C1 G1 由于列数很大 我在想是否可以使用单元格范围 比 Chronocidal慢一点 只是
  • 星际争霸、帝国时代等即时战略游戏的协议是什么样的? [关闭]

    Closed 这个问题需要多问focused help closed questions 目前不接受答案 我对这些类型的游戏的协议 和游戏循环 如何工作感兴趣 任何指示或见解表示赞赏 我猜想主循环会有一个世界状态 每秒会前进几个 滴答声 但
  • 如何阻止 gke-metadata-server 继续生成此日志?

    我创建了一个部署 意味着在启用工作负载身份的情况下将消息从 pubsub 插入到 bigquery 云日志不断向我发送此类日志 insertId test jsonPayload message rpc id test computeMet
  • 是否有关于 Dagger 在注入依赖项时何时回退到反射的文档?

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