基本概念
- Module:提供依赖对象 eg: context, rest api …
- @inject:需要依赖对象的地方
- Componet:连接Module和inject
其他概念
- 延迟加载
- Named injections(区分同类型注入)
Module
modules是一些class
必须在class上加上@Module
必须在每个method上加上@Provides
Modules可以拆开成多个module,组合在一起
Inject需要注入依赖的地方
必须有@Inject的annation
三种inject方式
constructor,field和method injection
Constructor Injection(构造方法注入)
- 在Constructor加上@Inject
- 表示Constructor的参数需要dependency
- 这些参数可以被使用在privte或final字段
Method Injection
- 在methods上加上@Inject
- 表示method的参数需要dependency
- injection发生在对象被完全建立之后
- 只有一个合理的use case:passing ‘this’ to a dependency
Field Injection
- 在fields上加上@Inject
- field不能为private或是final
- injection发生在对象完全建立之后
- 在anroid最常用到
Componet
连接Moddule和injection
component为injector(注入器) 实际发生inject的人
scope的概念
下面贴出学习Dagger2找到的资料 ,会一直更新
Dagger2简单介绍
http://yongjhih.gitbooks.io/feed/content/dagger2.html#%E4%BB%80%E9%BA%BC%E6%98%AF-di
Dagger 2: Even sharper, less square
http://blog.gouline.net/2015/05/04/dagger-2-even-sharper-less-square/
When the Avengers meet Dagger2, RxJava and Retrofit in a clean way
http://saulmm.github.io/when-Thor-and-Hulk-meet-dagger2-rxjava-1/?utm_source=Android+Weekly&utm_campaign=ba1f0a53c5-Android_Weekly_154&utm_medium=email&utm_term=0_4eb677ad19-ba1f0a53c5-337886713 该博客还有android架构系列 非常值得学习
Snorkeling with Dagger 2
Dependency Injection With Dagger 2 on Android
http://code.tutsplus.com/tutorials/dependency-injection-with-dagger-2-on-android–cms-23345
Dagger2 A New Type of dependecy injection
The Future of Dependency Injection with Dagger2台版
Dependency Injection with Dagger2
2015.9.30
Using Dagger 2 for dependency injection in Android - Tutorial