美文网首页
聊一聊Dagger2

聊一聊Dagger2

作者: 哎一不小心就 | 来源:发表于2018-12-29 12:00 被阅读0次

        网上有很多关于Dagger2的文章,但是我觉得很多地方解释起来都是比较拗口不便于理解,以下全文是我的理解。

        Dagger2:是依赖注入,主要用于模块间的解耦,比如一个类在多处被new出来,假如它的构造方法改了,那么这个类所有被实例化的地方都要改,那么Dagger2就可以派上用场了。

        了解Dagger2 必然要关注@Component 、@Module、@Inject

        一、@Inject    用于通知Dagger2需要被依赖注入的类

被@Inject标识的类

        二、@Module    Modules类提供通过@Inject标识要实例化类所需的参数,通过@Module标识,通过@Provides对外提供;modules的一个重要特征是它们设计为分区并组合在一起(说人话就是在我们的app中可以有多个组成在一起的modules);第一张图是可以直接实例化,第二张图是不能直接实例化的用过构造方法传进来。

被@Module标识的类

        三、@Component    Component是一个接口作为Module和Inject的桥梁,是将Module提供的参数,注入到@Inject标注的对象中

被@Component标识的类

        如果真正消耗依赖的地方是子类,那么上面的参数就不能写父类。因为Dagger2在编译时生成依赖注入的代码,会到inject方法的参数类型中寻找通过@inject标识的引用,如果没有找到Dagger2会认为没有需要注入的对象。

        了解以上三个类就能基本的使用Dagger2啦,当然Dagger2还有其他的标识。

        @ Socpe 用于自定义注解限定注解作用域

步骤一:首先我这边通过@Scope定义一个@interface ActivityScope注解。

步骤二: 运用的话可以放在Module处或者Component处,这两处也可以配合使用(@Singleton也一样)。

        但是如果Component依赖的Module的@Provide有@Scope,则@Component也必须要有,否则编译会报错(@Singleton也一样)例如:

        @Singleton 标识当前的对象或方法是单例模式

        至此你可以在项目中使用Dagger2啦

相关文章

  • 聊一聊Dagger2

    网上有很多关于Dagger2的文章,但是我觉得很多地方解释起来都是比较拗口不便于理解,以下全文是我的理解。 Da...

  • 聊一聊

    就是这样,喜欢自我欺骗,明知道,真心想你,或者有事的人,会打电话给你。却还是忍不住的用微信,看一个人的消息和动态,...

  • 聊一聊

    记录一下,现在是女儿的生日。2020.7.25星期六 生日快乐我的小天使 微淼商学院说过最经典的话是:有些做商学院...

  • 聊一聊

    早在三天前师兄就告知我们今天上午老师会和我们在实验室聊一聊。校园卡余额不足,时间紧张未吃早餐,早上慌忙收拾赶紧到实...

  • 聊一聊

    大家好,我是野生梅花鹿。 马上就12点了,我决定用几分钟的时间随便写点啥~ 首先呢,是反省。 这个月,其实懒惰了很...

  • 聊一聊

    很久没写了,聊聊最近发生的事,十月份开始了一段长板之旅,一开始担心害怕摔,因为通过挑战一个个动作,挺有趣的,当你为...

  • 聊一聊

    疫情这些年,常常听到的是,哪哪被封控了之类,作为天选打工人,一直在正常上班搬砖中。 直至上周五晚接...

  • 聊一聊自律

    很久以前就知道韩雪,当时只觉得她是气质很优雅,长得很美丽的女明星,没有什么特殊的感觉,应该就是花瓶而已。 她的才气...

  • 睡前聊一聊

    每天晚上睡觉前和小胤聊一聊,这是我目前最喜欢的事情了。听听他讲一讲幼儿园的所见所闻,觉得人生都充满了童趣。 昨天小...

  • 聊一聊寿险

    什么是寿险? 可以简单理解为死亡险,是在被保险人发生死亡后进行赔偿的保险。比如,45岁的Jack因为生病去世了,他...

网友评论

      本文标题:聊一聊Dagger2

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