Dagger2 初探

转载地址: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/

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容