欢迎关注我的微信公众号,不只是原创技术分享,更多的是生活的思考和总结。
介绍
A fast dependency injector for Android and Java.
一个在 Android 和 Java 平台上使用的快速的依赖注入框架。
类似 java 开发中的 spring 框架,但使用难度比 spring 大一点点。
依赖注入框架主要用于模块间解耦,提高代码的健壮性和可维护性。
几个必须知道的概念:
什么是依赖:
如果在 Class A 中,有 Class B 的实例,则称 Class A 对 Class B 有一个依赖。
什么是依赖注入:
依赖注入就是非自己主动初始化依赖,而通过外部来传入依赖的方式,简单来说就是不使用 new 来创建依赖对象。
三大元素:
必不可少的元素有三种,Module,Component,Container
- Container 拥有者,容器等意思,其中 Activity 就是 Dagger2 中的 Container.
- Component Acitvity 和 依赖对象之间的一个桥梁。
- Module 就是负责提供对象的。
用到的注解如下:
@Inject:
通常在需要依赖的地方使用这个注解。换句话说,你用它告诉 Dagger 这个类或者字段需要依赖注入。这样,Dagger 就会构造一个这个类的实例并满足他们的依赖。@Module:
Modules 类里面的方法专门提供依赖,所以我们定义一个类,用 @Module 注解,这样 Dagger 在构造类的实例
时候,就知道从哪里去找到需要的 依赖。modules 的一个重要特征是它们设计为分区并组合在一起(比如说,
我们的 app 中可以有多个组成在一起 的modules)@Provide:
在 modules 中,我们定义的方法是用这个注解,以此来告诉 Dagger 我们想要构造对象并提供这些依赖。@Component:
Components 从根本上来说就是一个注入器,也可以说是 @Inject 和 @Module 的桥梁,它的主要作用就是连接这两个部分。 Components 可以提供所有定义了的类型的实例,比如:我们必须用 @Component 注解一个接口然后列出所有的
官方 Github 地址以及 API 说明文档::
使用准备:
project 的 build.gradle 添加
dependencies {
... // 其他 classpath
classpath 'com.neenbedankt.gradle.plugins:android-apt:1.8' //添加 apt 命令
}
module 的 build.gradle 添加
// 添加其他插件
apply plugin: 'com.neenbedankt.android-apt'//添加 apt 命令
dependencies {
apt 'com.google.dagger:dagger-compiler:2.0.2' //指定注解处理器
compile 'com.google.dagger:dagger:2.0.2' //dagger 公用 api
provided 'org.glassfish:javax.annotation:10.0-b28' //添加 android 缺失的部分 javax 注解
}
直接从代码出发吧
代码完整,可以直接粘贴到自己 AS 验证。
看一个简单的例子:
代码如下: