Dagger2.0基本使用及简单原理
来源:互联网 发布:tim 钉钉 知乎 编辑:程序博客网 时间:2024/05/10 12:35
一.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. @Inject StudentPresenter 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工具是如何根据我们的注解来生成对应的代码的,后续博客会写到,期待吧...
- Dagger2.0基本使用及简单原理
- Dagger2基本使用与原理
- Dagger2的基本使用
- dagger2 的基本使用
- Dagger2 使用+原理解析
- dagger2的配置及基本使用(一)
- Dagger2简单使用
- dagger2简单使用
- Dagger2简单入门使用
- Dagger2的简单使用
- Dagger2的简单使用
- Dagger2的简单使用
- Dagger2简单使用
- Dagger2的简单使用
- dagger2简单使用
- Dagger2 的简单使用
- Dagger2的简单使用
- Dagger2的简单使用
- collection[set,, list]和map的的特点
- Parse error: syntax error, unexpected T_VARIABLE in
- 背诵圆周率前五十位
- Android提交数据
- recovery相关的FAQ总结
- Dagger2.0基本使用及简单原理
- 蓝牙 履带小车 制作
- 常用运行和CMD命令
- VxWorks 7 && VxWorks 7 plus
- Shiro-学习总结-认证
- jquery中的AJAX请求响应
- 字符串处理
- Unity中国象棋(五)——网络对战的实现(服务端的基本功能)
- @Scope("prototype")相关内容