Dagger2.0基本使用及简单原理
2017-02-20 23:06
232 查看
一.Dagger2.0背景
依赖注入主要解决代码耦合性问题,使对象在一个封闭,独立的地方初始化,当对象的实现方法需要大量修改的时候不需要大改代码库。在Android中的应用主要是在MVP模式中P层与V层的解耦,以及在网络请求中配合Retrofit2.0进行网络请求。
二.比较
依赖注入分为两种:反射和APT工具反射:利用java代码反射的原理,在代码执行期间实现依赖注入。缺点是:性能不好,比较耗时,比如xutils注解
APT工具:是在代码的编译期间就生成对应对象的java文件。优点是:性能比较好,犹如自己写的代码一样,比如BufferKnife,Dagger2.0
三.使用
Dagger2.0依赖Apt代码生成工具,Dagger2指定注解,然后APT工具根据我们的注解自动生成注入文件基础使用有四个注解:
@Inject:指定目标对象,通常在需要注入的地方作为标记
@Module:指定对象创建所在的类
@Provide:指定对象创建所在的方法
@Component:把目标对象和创建对象实例化的容器关联在一起
步骤
1. @InjectStudentPresenter presenter; //指定注入对象
2. @Module public class StudentModule{ @Provide StudentPresenter provideStudentPresenter(){ return new StudentPresenter(); //返回初始化对象 } }
3. @Component (modules = Student.class) public interface StudentComponent{ void in(Student mStudent); //指定依赖注入所在的类 }
4. 编译
5. DaggerStudentComponent component = (DaggerStudentComponent)DaggerStudentComponent.builder() .studentModule(new StudentModule()) .build(); //DaggerStudentComponent类名是根据我们注解的类的名字所生成的 component.in(this); presenter.方法;
四者之间的关系就像是我们创建对象的一个表达式
比如:Student mStudent = new Student();
@Inject @Component @Modules @Provide
只不过是通过注解在创建对象的时候,把创建过程放在了封闭独立的容器中,达到了高度解耦的效果
四.小结
以上只是对Dagger2中四个注解的使用,此外还有@Scope(可以自定义注解) @Qualifier(标示类的类型不同的类的依赖)至于Dagger2.0的一些高级的使用以及APT工具是如何根据我们的注解来生成对应的代码的,后续博客会写到,期待吧...
相关文章推荐
- hadoop入门(2)——HDFS2.0应用场景、原理、基本架构及使用方法
- 最简单易懂的RxJava2.0学习教程之RxJava2的基本使用(一)
- iOS开发:runtime原理简单分析和基本使用场景
- [转载]使用illustrator和正交投影原理以及基本三视图制图
- ORM,ASP.NET中ORM学习,ASP.NET中ORM学习心得,WEB2.0中ORM实现原理,Asp.net简单ORM示例源码详细讲解,Asp.net2.0:如何使用ObjectDataSource(配合ORM )
- 使用V4L进行简单视频捕捉的基本步骤
- Oracle job基本使用方法----简单实例演示
- OpenCV学习笔记(8)VS2008 MFC下使用OpenCV2.0进行简单图像处理
- VisualSVN Server的基本配置和简单的使用方法
- linux: 基本命令之:查看磁盘空间, netstat, wc简单使用
- linux: 基本命令之:查看磁盘空间, netstat, wc简单使用
- 使用Unity2.0的Interceptor实现简单AOP
- ORM,ASP.NET中ORM学习,ASP.NET中ORM学习心得,WEB2.0中ORM实现原理,Asp.net简单ORM示例源码详细讲解,Asp.net2.0:如何使用ObjectDataSource(配合ORM )(二)
- asp.net 2.0生命周期 以及Page_Load Page_Init方法使用原理
- repeater基本使用方法,挺简单的,供大家共享
- 钩子的原理和基本使用方法
- struts2.0的预览版及简单使用
- .net2005下datawindow.net2.0的简单使用
- 在自己的MIS系统使用简单的加密功能加密基本数据
- asp.net 2.0生命周期 以及Page_Load Page_Init方法使用原理