是否可以在Dagger中混合使用构造函数和字段注入?

卡施温克

我正在尝试将Dagger用于我的android项目,但遇到一个问题:是否可以混合使用构造函数和字段注入?我有一个模块和两个类:

@Module(injects = fooActivity.class)
public class Module {
    private fooActivity activity;

    public Module(fooActivity activity) {
        this.activity = activity;
    }

    @Provides
    public bar provideBar() {
        return new bar(activity);
    } 
}

public class fooActivity extends Activity {

    @Inject Baz baz;
    public void onCreate(Bundle savedInstanceState) {
        ...
        ObjectGraph graph = ObjectGraph.create(new BasicModule()).plus(new Module(this));
        graph.inject(this);
    }
}

public class bar {

    @Inject Baz baz;
    @Inject FooActivity activity;
    public bar(FooActivity activity) {
        this.activity = activity;
    }
}

问题在于注入后,“ Bar”类中的“ baz”始终为空。但是,如果我不使用provide方法,而仅使用字段注入并处理“模块”中的所有依赖项,则它可以工作。因此,从我的角度来看,存在三种可能性:1)仅执行字段注入并处理模块类中的所有依赖项。2)仅进行构造函数注入,并将所有依赖项作为构造函数参数。3)混合两者,但在构造函数中的ObjectGraph对象上调用.inject(this)以满足带有@Inject批注的字段。

这样对吗?

编辑:我不能使用完整的构造函数注入,因为在另一个模块中声明了'baz'。编辑示例。

@Module(includes = Module.class)
public class BasicModule {
    @Provides 
    public baz provideBaz() {
        return new baz();
    }
}

我认为您正在尝试做的事情是可能的。我认为您想将活动图添加到匕首中的主应用程序图中。

查看https://github.com/square/dagger/tree/master/examples/android-activity-graphs

还有您的类吧,您可能应该完成构造函数注入。但是,如果您必须按照自己的方式进行操作,则需要在模块中调用注入和注册栏。这是我创建酒吧的方式。

public class Bar {
    private final Activity activity;
    private final Baz baz;

    @Inject public bar(FooActivity activity, Baz baz) {
        this.activity = activity;
        this.baz = baz;
    }
}

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

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

来自分类Dev

您可以在Angular Dart的构造函数中混合常规参数和注入参数吗?

来自分类Dev

如何使用Ninject和MVC4将依赖项注入FluentValidation AbstractValidator构造函数中?

来自分类Dev

Restler中的构造函数注入

来自分类Dev

在一个类中混合使用静态和非静态方法是否可以接受?

来自分类Dev

Dagger:定义在其构造函数中包含上下文的可注入类的正确方法

来自分类Dev

在PHP的构造函数中调用可重写的访问器和mutator方法是否可以接受

来自分类Dev

是否可以使用反序列化注入构造函数?

来自分类Dev

Dagger 2.0构造函数注入和Singleton

来自分类Dev

是否可以减少在此代码中使用的构造函数的数量?构造函数重载和多个类的转发

来自分类Dev

是否可以在PHP中重载构造函数

来自分类Dev

匕首2:什么时候使用构造函数注入,什么时候使用字段注入?

来自分类Dev

构造函数注入Dagger 2

来自分类Dev

Dagger 2依赖关系是否可以注入?

来自分类Dev

Dagger无法使用Dagger Android在ViewModel的构造函数上注入类型为interface的参数

来自分类Dev

在ASP.NET Core中间件构造函数中混合依赖项注入和手动传递的参数

来自分类Dev

如何使用Dagger2在ViewModel构造函数中注入WorkManager实例?

来自分类Dev

如何在Dagger2 android中为ViewModel使用构造函数注入?

来自分类Dev

是否可以在构造函数中使用this.fieldname初始化基类中的字段?

来自分类Dev

Scala:是否可以使用宏注释对类的构造函数字段进行注释?(宏观天堂)

来自分类Dev

是否可以在构造函数中调用函数?的PHP

来自分类Dev

是否可以在Dagger中混合使用构造函数和字段注入?

来自分类Dev

使用C#和Autofac的构造函数注入模式

来自分类Dev

构造函数注入Dagger 2

来自分类Dev

在使用构造函数注入时,dagger 是否识别要注入的接口?

来自分类Dev

构造函数中的依赖注入

来自分类Dev

构造函数注入的空指针异常并与字段注入模拟一起使用

来自分类Dev

Kotlin 中的 Dagger 2:有没有办法在不使用 Module 的情况下使用默认参数化构造函数对类进行注入?

来自分类Dev

构造函数注入使 dagger 2 和 mvp 中的 MissingBinding

Related 相关文章

  1. 1

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

  2. 2

    您可以在Angular Dart的构造函数中混合常规参数和注入参数吗?

  3. 3

    如何使用Ninject和MVC4将依赖项注入FluentValidation AbstractValidator构造函数中?

  4. 4

    Restler中的构造函数注入

  5. 5

    在一个类中混合使用静态和非静态方法是否可以接受?

  6. 6

    Dagger:定义在其构造函数中包含上下文的可注入类的正确方法

  7. 7

    在PHP的构造函数中调用可重写的访问器和mutator方法是否可以接受

  8. 8

    是否可以使用反序列化注入构造函数?

  9. 9

    Dagger 2.0构造函数注入和Singleton

  10. 10

    是否可以减少在此代码中使用的构造函数的数量?构造函数重载和多个类的转发

  11. 11

    是否可以在PHP中重载构造函数

  12. 12

    匕首2:什么时候使用构造函数注入,什么时候使用字段注入?

  13. 13

    构造函数注入Dagger 2

  14. 14

    Dagger 2依赖关系是否可以注入?

  15. 15

    Dagger无法使用Dagger Android在ViewModel的构造函数上注入类型为interface的参数

  16. 16

    在ASP.NET Core中间件构造函数中混合依赖项注入和手动传递的参数

  17. 17

    如何使用Dagger2在ViewModel构造函数中注入WorkManager实例?

  18. 18

    如何在Dagger2 android中为ViewModel使用构造函数注入?

  19. 19

    是否可以在构造函数中使用this.fieldname初始化基类中的字段?

  20. 20

    Scala:是否可以使用宏注释对类的构造函数字段进行注释?(宏观天堂)

  21. 21

    是否可以在构造函数中调用函数?的PHP

  22. 22

    是否可以在Dagger中混合使用构造函数和字段注入?

  23. 23

    使用C#和Autofac的构造函数注入模式

  24. 24

    构造函数注入Dagger 2

  25. 25

    在使用构造函数注入时,dagger 是否识别要注入的接口?

  26. 26

    构造函数中的依赖注入

  27. 27

    构造函数注入的空指针异常并与字段注入模拟一起使用

  28. 28

    Kotlin 中的 Dagger 2:有没有办法在不使用 Module 的情况下使用默认参数化构造函数对类进行注入?

  29. 29

    构造函数注入使 dagger 2 和 mvp 中的 MissingBinding

热门标签

归档