美文网首页dagger2入门到不放弃
Dagger2使用与分析(6)---@Qualifier 和@N

Dagger2使用与分析(6)---@Qualifier 和@N

作者: saygoodbye_e92e | 来源:发表于2019-04-08 13:02 被阅读16次

    应用场景:多个构造方法想要@Inject、多个@Provides方法返回同一数据类型,这种情况该如何注入?

    一、通过@Qualifier来实现

    1.首先自定义注解

    自定义注解

    依赖类

    实体类

    自定义module

    module

    自定义Component

    //指定模型

    @Component(modules = SellMoeModule.class)

    public interface SellMoeComponent {

    void inject(MainActivity mainActivity);

    }

    使用:

    使用

    注意:此处要在module和目标类中添加自定义的  @Qualifier注解

    二、通过@Name来实现

    还是原来的套路,我们先看一下依赖类:

    多构造函数

    再来看一下自定义Module

    自定义moudle

    自定义component

    自定义Component

    使用:

    使用

    注意:1.需要在自定义module和注入的目标类中使用@Name注解

    2.如何是区分两个构造函数,需要在两个相关的moudle和目标类中都需要标注@Name 如果只是标注一个,编译会报错

    分析:

    DaggerSellMoeComponent--->inject--->injectMainActivity(mainActivity)

    生成文件005

    以其中一个为例子:

    如MainActivity_MembersInjector.injectMSellMoe(instance, getNamedSellMoe());

    -------->getNamedSellMoe()------->

    private SellMoegetNamedSellMoe() {

    return SellMoeModule_SellMoeProviderFactory.sellMoeProvider(

    sellMoeModule, sellMoeModule.ageProvider());

    }

    ------------>进入SellMoeModule_SellMoeProviderFactory中查看sellMoeProvider

    生成文件006

    最终在get()方法中调用这个SellMoeProvider。同第一篇文章我们分析的一样,这个get,会在MainActivity_MembersInjector中

    生成文件

    整体思路和之前的都是大同小异

    相关文章

      网友评论

        本文标题:Dagger2使用与分析(6)---@Qualifier 和@N

        本文链接:https://www.haomeiwen.com/subject/kqluiqtx.html