Dagger2 初探

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

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

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

生成代码

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


Dagger2 初探_第1张图片

虽然牺牲了动态特性,但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 初探)