java 注解开发 解耦_Android java 解耦框架注解Dagger2
参考文档
Dagger工作原理
dagger2的工作原理是,在你的java代码编译成字节码的过程中,dagger2会对所有的Component(就是用 @Component修饰过的interface)进行处理,自动生成一个实现了这个interface的类,生成的类名是Component的名字前面加上“Dagger”。比如我们定义的 AppComponent,对应的自动生成的类叫做DaggerAppComponent。我们知道,实现一个interface需要实现里面的所有方法,因此,DaggerAppComponent是实现了 loginPresenter();这个方法的。
实现的方式大致就是从 AppComponent管理的 AppModule里面去找LoginPresenter的Provider方法,然后调用这个方法,返回一个LoginPresenter。
Dagger2的重要角色
生产Dependency的工厂:Module
@Module:用于标注一个类,表明这是一个Module,而不是一个普通的类。Module就是生产Dependency的地方。
@Provides:用于标注 @Module标注类中 方法的,表明这个方法是用来生产Dependency的,这个方法叫做Provider方法。(因为一个Module也可以有一些正常的方法)。
Dependency工厂管理员:Component
跟Module不同的是,我们在实现Component时,不是定义一个类,而是定义一个接口(interface):
@Component(modules={AppModule.class})
@Singleton
public interface AppComponent {
void inject(LoginActivity loginActivity);
}
modules属性接收一个数组,里面是这个Component管理的所有Module。在上面的例子中,AppComponent只管理AppModule一个。
Component给Client提供Dependency的方法
前面我们讲了Module和Component的实现,接下来就是Component怎么给Client提供Dependency的问题了。一般来说,有两种,当然总共不止这两种,只不过这两种最常用,也最好理解,一般来说用这两种就够了,因此这里不赘述其他的方法。
方法一:在Component里面定义一个返回Dependency的方法
java 注解开发 解耦_Android java 解耦框架注解Dagger2相关推荐
- java反射和注解开发(备java基础,javaee框架原理)-任亮-专题视频课程
java反射和注解开发(备java基础,javaee框架原理)-5358人已学习 课程介绍 Java注解是附加在代码中的一些元信息,用于一些工具在编译.运行时进行解析和使用,起到说明. ...
- flex java 开发环境搭建_Flex+JAVA+BlazeDS开发环境配置(Java工程和Flex工程独立)
Flex+JAVA+BlazeDS开发环境配置(Java工程和Flex工程独立) 2019年12月07日 阅读数:7 这篇文章主要向大家介绍Flex+JAVA+BlazeDS开发环境配置(Java工程 ...
- 初学 Java Web 开发,请远离各种框架,从 Servlet 开发
写在前面: 本文是转自:http://www.oschina.net/question/12_52027 的文章,如果要求删除,第一时间联系我立即删除! Web框架是开发者在使用某种语言编写Web应 ...
- 初学Java Web开发,请远离各种框架,从Servlet开发
[转载自红薯,原帖地址]http://www.oschina.net/question/12_52027 OSCHINA 软件库有一个分类--Web框架,该分类中包含多种编程语言的将近500个项目. ...
- Spring注解开发以及基于java的容器配置
Spring4后的注解开发 使用bean.xml实现注解开发 需要导入aop包(如果没有导入该包,注解无效) beans.xml配置 <?xml version="1.0" ...
- java智能卡开发_《Java智能卡原理与应用开发》PDF 下载
图书目录: 封面 扉页 版权页 内容简介 出版说明 前言 序 目录 第一部分 Java智能卡编程基础 第1章 绪言 1.1 智能卡简介 1.2 Java智能卡简介 1.3 发展前景 1.3.1 智能卡 ...
- 《Java Web开发实战》Java工程师推荐的进阶之路
<Java Web开发实战>一书更加趋于实战性.此教材由浅入深.循序渐进,在语法阐述时尽量避免术语和公式,使初学者能够快速入门,全面掌握实战技能.它既可以作为高等院校本.专科计算机相关专业 ...
- 张孝祥java邮件开发_张孝祥java邮件开发详解笔记(生成文本邮件)
package zxx.createMessage; import java.io.FileOutputStream; import java.util.Date; import java.util. ...
- java 托盘开发_基于java开发之系统托盘的应用
代码如下: package com.b510.tray托盘; import java.awt.event.ActionEvent; import java.awt.event.ActionListen ...
- java retrofit_Android开发Retrofit2+Rxjava2+okHttp 网络框架封装
释放双眼,带上耳机,听听看~! 说明 RxJava的概念其实很模糊,我对它的理解就是一个给你方便处理异步问题的框架,到底有多方便,体会过才知道... Retrofit就是对okhttp做了一层封装.把 ...
最新文章
- python2 与 python3的区别总结
- Linux启动网卡时出现RTNETLINK answers: File exists错误解决方法
- javafx 浏览器_浏览器中的JavaFX
- 程序员为什么要少写代码?
- 奖金15万!全球首届“AI球球大作战:Go-Bigger多智能体决策智能挑战赛”开启
- 区块链如何赋能车联网-Higgs Chain
- android 日历图,Android中的自定义日历视图
- 微信小程序云开发教程-JavaScript入门(3)-数据类型
- 详解什么是运营商大数据?
- Houdini函数表达式
- python 字典类型 get 参数_python如何利用urllib解析url参数成字典
- 万用表怎么测电池内阻_万用表怎么测量电阻
- 谷仓创造区块链+电商消费新模式
- 深度学习之鸡兔同笼问题
- 计算机科学论文生成器,高考满分作文生成器来了!分分钟批量完成「生活在XX上」...
- 有赞测试新人训之探索与实践
- word文件怎么另存
- c语言自定义创建文件,c语言自定义文件名?
- AcWing 285. 没有上司的舞会
- 常见的计算机专业的复合命题例子,第五章、复合命题.ppt
热门文章
- Redis安装及Java客户端的使用浅析(jedis)
- 1121: [POI2008]激光发射器SZK
- 搜集整理一些Cron表达式例子
- [引用]关于C#操作INI文件的总结
- VS2010与.NET4系列 19.ASP.NET4中新的HTML编码的%: %语法
- typeof和instanceof的用法
- iOS开发之理解iOS中的MVC设计模式
- 使用sshfs挂载服务器文件系统,用curlftpfs挂载FTP服务器
- 如何在Web App Project 或者 Web Site Project的App_Code 内使用 Profile/ProfileCommon
- 静态初始化--我的理解