加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

依赖注入 – Dagger中的依赖提供优先级

发布时间:2020-12-14 04:52:53 所属栏目:百科 来源:网络整理
导读:当您使用@Inject-annotated构造函数通知Dagger如何提供依赖项时,您可以稍后在模块中覆盖它吗?案例:我的生产代码使用带有带注释的构造函数的组件,我想在测试期间使用测试实现覆盖它.我的override = true模块会在测试期间成功覆盖生产实现吗? 或者更一般的
当您使用@Inject-annotated构造函数通知Dagger如何提供依赖项时,您可以稍后在模块中覆盖它吗?案例:我的生产代码使用带有带注释的构造函数的组件,我想在测试期间使用测试实现覆盖它.我的override = true模块会在测试期间成功覆盖生产实现吗?

或者更一般的问题,什么优先,模块或注释类?

解决方法

@Provides方法总是特朗普@Inject构造函数和无参数构造函数(带字段注入.

这很重要,因为@Provides方法接管创建类型的责任,并且包括作用域,因此在@Provides方法中手动构造的标记为@Singleton的类将不会作用域,除非@Provides方法是作用域的.

请注意,您在测试的上下文中使用了“override”一词…在这种情况下,您不需要使用@Module(override = true)设置(尽管没有任何危害).它只是一个优先顺序,它解析(实际上)如下:

> @Module(overrides = true)@Provides方法> @Module(覆盖=假)(默认)@Provides方法> @Inject构造函数的Just In Time绑定> Just-Time绑定no-arg构造函数,IF类具有@Inject字段.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读