美文网首页
Dagger2 初探

Dagger2 初探

作者: Android技术研究 | 来源:发表于2016-02-29 14:40 被阅读389次

    转载地址:http://fanxu.me/post/2015-10-29

    Dagger2 是Google在Square的Dagger基础上扩展的依赖注入组件,从Dagger1转到Dagger2,会有一些不一致的地方,但总体来说,Dagger2较Dagger1优化了非常多。

    本文就Dagger2 与Dagger1的不同做些简述。 由于还没有正式使用Dagger2,所述观点可能有所偏颇,欢迎拍砖。

    生成代码

    与一代不同,Dagger2会生成一堆辅助代码,如下图。

    虽然牺牲了动态特性,但Dagger2的生成代码使得其极易调试,阅读和分析都非常方便。

    Component

    Dagger2新增了Component,作为Module和Inject对象之间的桥梁。

    与Dagger1不同,Dagger2中所有的对象,必须要与明确的@Inject Contructor才会自动构建,否则必须按照Component进行注入。这样做,虽然会少许有些不方便,但代码的可读性提高了很多,较容易理解。

    Singleton

    Dagger2支持Singleton属性,支持在Provides方法和类头部添加,其含义也是单例。

    但必须在Component上也声明为Singleton, 这个有点比较难以理解。

    Scope

    Dagger2添加了Scope特性,可以给定对象的存活区域,这个对于Android编程非常有利。

    总结

    总体来说,Dagger2 比较容易理解,生成的代码也很方便。

    其他内容等后续逐渐使用,再行补充。

    自己搞了一个java的Demo,https://github.com/fanxu123/Dagger2Demo

    Links

    http://frogermcs.github.io/dependency-injection-with-dagger-2-introdution-to-di/

    http://frogermcs.github.io/dependency-injection-with-dagger-2-the-api/

    http://frogermcs.github.io/dependency-injection-with-dagger-2-custom-scopes/

    http://frogermcs.github.io/dagger-graph-creation-performance/

    http://frogermcs.github.io/dagger-1-to-2-migration/

    相关文章

      网友评论

          本文标题:Dagger2 初探

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