Dagger2

简介:  Dagger2 是一个Android依赖注入框架,由谷歌开发,最早的版本Dagger1 由Square公司开发。依赖注入框架主要用于模块间解耦,提高代码的健壮性和可维护性。Dagger 这个库的取名不仅仅来自它的本意“匕首”,同时也暗示了它的原理。Jake Wharton 在对 Dagger 的介绍中指出,Dagger 即 DAG-er,这里的 DAG 即数据结构中的 DAG——


 Dagger2 是一个Android依赖注入框架,由谷歌开发,最早的版本Dagger1 由Square公司开发。依赖注入框架主要用于模块间解耦,提高代码的健壮性和可维护性。Dagger 这个库的取名不仅仅来自它的本意“匕首”,同时也暗示了它的原理。Jake Wharton 在对 Dagger 的介绍中指出,Dagger 即 DAG-er,这里的 DAG 即数据结构中的 DAG——有向无环图(Directed Acyclic Graph)。也就是说,Dagger 是一个基于有向无环图结构的依赖注入库,因此Dagger的使用过程中不能出现循环依赖


Dagger2 通过注解来生成代码,定义不同的角色,主要的注解有:@Inject、@Module 、@Component 、@Provides 、@Scope 、

@SubComponent 等


 @Inject: 通常在需要依赖的地方使用这个注解。换句话说,你用它告诉Dagger这个类或者字段需要依赖注入。这样,Dagger就会构造一个这个类的实例并满足他们的依赖。
  @Module: Modules类里面的方法专门提供依赖,所以我们定义一个类,用@Module注解,这样Dagger在构造类的实例的时候,就知道从哪里去找到需要的 依赖。modules的一个重要特征是它们设计为分区并组合在一起(比如说,在我们的app中可以有多个组成在一起的modules)。
  @Provides: 在modules中,我们定义的方法是用这个注解,以此来告诉Dagger我们想要构造对象并提供这些依赖。
  @Component: Components从根本上来说就是一个注入器,也可以说是@Inject和@Module的桥梁,它的主要作用就是连接这两个部分。 Components可以提供所有定义了的类型的实例,比如:我们必须用@Component注解一个接口然后列出所有的   @Modules组成该组件,如 果缺失了任何一块都会在编译的时候报错。所有的组件都可以通过它的modules知道依赖的范围。
  @Scope: Scopes可是非常的有用,Dagger2可以通过自定义注解限定注解作用域。后面会演示一个例子,这是一个非常强大的特点,因为就如前面说的一样,没必要让每个对象都去了解如何管理他们的实例。


网上关于Dagger2的介绍很多,这里只讲解关于它的一些概念,下面贴出一篇文章关于Dagger2的运行原理的讲解:

http://www.tuicool.com/articles/Qb2eAvZ


关于Dagger2的例子的代码:http://download.csdn.net/detail/linhaosheng123456/9471471








目录
相关文章
|
3月前
|
Android开发
解決Android报错:Could not initialize class org.codehaus.groovy.reflection.ReflectionCache
解決Android报错:Could not initialize class org.codehaus.groovy.reflection.ReflectionCache
104 1
|
6月前
|
容器
Dagger2的使用
Dagger2的使用
42 0
|
缓存 Android开发 开发者
Dagger2 框架与 SystemUI
Dagger2 框架与 SystemUI
Dagger2 框架与 SystemUI
|
缓存 Android开发 开发者
Dagger2和它在SystemUI上的应用
Dagger2和它在SystemUI上的应用
Dagger2和它在SystemUI上的应用
Android | 依赖注入与 Dagger2 框架【@Deprecated】
Android | 依赖注入与 Dagger2 框架【@Deprecated】
209 0
Android | 依赖注入与 Dagger2 框架【@Deprecated】
|
存储 前端开发 Java
Jetpack 系列(10)—— 从 Dagger2 到 Hilt 玩转依赖注入(一)
Jetpack 系列(10)—— 从 Dagger2 到 Hilt 玩转依赖注入(一)
439 0
Jetpack 系列(10)—— 从 Dagger2 到 Hilt 玩转依赖注入(一)
|
存储 设计模式 前端开发
依赖注入之Dagger2初探
依赖注入之Dagger2初探
234 0
|
Java Maven Android开发
Dagger2 入门解析
前言 在为dropwizard选择DI框架的时候考虑了很久。Guice比较成熟,Dagger2主要用于Android。虽然都是google维护的,但Dagger2远比guice更新的频率高。再一个是,Dagger2不同于guice的运行时注入,编译时生成代码的做法很好。
2016 0
|
测试技术 API Android开发
espresso框架
一、espresso简介espresso是google官方推出的ui自动化框架,可以用来做单元测试和自动化测试。 官方说明文档:https://developer.android.com/training/testing/espresso/ 官方中文文档:https://lovexiaov.
1585 0
|
测试技术 Android开发 数据格式
Android Dagger2依赖注入
Dagger2项目主页 使用依赖 annotationProcessor 'com.google.dagger:dagger-compiler:2.
1039 0