当前位置: 首页 > 面试题库 >

使用dagger2进行依赖项注入时是否可以只注入超类?

薛利
2023-03-14
问题内容

我在Android应用程序中将Dagger2用于DI。我发现我必须为使用@Inject字段的每个类编写注入方法。有没有一种方法可以只注入父类,而不必在每个子类上调用inject?以活动为例。我有一个“
BaseActivity每个活动都从中延伸”的内容。有没有一种方法,我可以在BaseActivity的组件中创建一个注入方法,然后在BaseActivity的onCreate中调用inject,子活动中的@inject字段会自动注入?


问题答案:

现在无法完成。Gregory
Kick的解释(从此处开始):

成员注入方法的工作方式如下:

  1. 您可以为@Inject在其类层次结构中任何位置的任何类型创建成员注入方法。如果没有,您将得到一个错误。
  2. @Inject将注入整个类型层次结构中的所有ed成员:参数类型和所有超类型。
  3. @Inject参数类型的子类型不会编辑任何成员。

在这里和这里都讨论了此问题,请进行后续更新。但是不太可能很快改变,因为Dagger
2 即将发布。



 类似资料:
  • 我在android应用程序中使用Dagger2进行DI。我发现我必须为每个使用@inject字段的类编写inject方法。有没有一种方法,我可以只注入父类,这样我就不必对每个子类都调用注入?以活动为例。我有一个,每个活动都从它扩展。是否有一种方法可以在组件中为BaseActivity创建一个inject方法,并在BaseActivity的onCreate中调用inject,然后自动注入子活动中的@

  • 例如,Foos的资源可能如下所示: 对于酒吧:

  • 我得到以下生成错误: 错误:[dagger.android.androidinjector.inject(T)]没有@provides-annotated方法,无法提供android.support.v4.app.fragmentManager。 公共抽象接口AppComponent扩展dagger.android.androidinjector{^android.support.v4.app.f

  • 从零开始,没有任何以前的Jersey 1.x知识,我很难理解如何在我的Jersey 2.0项目中设置依赖注入。 我也知道HK2在Jersey 2.0中可用,但我似乎找不到有助于Jersey 2.0集成的文档。 我可以让容器启动并提供我的资源,但是当我将@inject添加到MyService时,框架就会抛出一个异常: 我的starter项目可在github:https://github.com/do

  • 我希望是需要非序列化依赖项才能完成其工作的东西。 我知道我能做到: 这将从源代码读取的字符串包装在包含依赖项的另一个对象中,从而使能够访问这些依赖项,而不需要将它们注入到该对象本身。这是可行的,但我想在Jet之外使用我的映射函数,也是管道的一部分,在这种情况下,必须将依赖关系与被映射的项一起传递,而不是仅仅用它需要的依赖关系初始化映射器,这有点奇怪。它还迫使我毫无意义地在我的流/批处理中为每个项创

  • 本文向大家介绍Dagger2 Android依赖注入学习笔记,包括了Dagger2 Android依赖注入学习笔记的使用技巧和注意事项,需要的朋友参考一下 前言 最近在用 MVP + RxJava + Retrofit 写项目,觉得相对于其他的开发框架,这的确是给我们带来了很多方便,但是在网上搜寻相关资料的时候,总是能看到 MVP + RxJava + Retrofit + Dagger 这样的搭