- Dagger2是一种依赖注入框架,用来帮我们进行类初始化的工作,通常配合MVP架构模式使用。
- 在Project的build.gradle中添加apt命令
classpath 'com.neenbedankt.gradle.plugins:android-apt:1.8' //添加apt命令
- 在Moudle的build.gradle中添加dagger2的依赖
如果同时依赖了butterknife那么可以采用如下的配置//dagger2 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注解
apply plugin: 'com.android.application' //添加apt命令 apply plugin: 'android-apt' dependencies { //butterknife compile 'com.jakewharton:butterknife:8.4.0 apt 'com.jakewharton:butterknife-compiler:8.4.0' //dagger2 //指定注解处理器 apt 'com.google.dagger:dagger-compiler:2.0.2' //dagger公用api compile 'com.google.dagger:dagger:2.0.2' //添加android缺失的部分javax注解 provided 'org.glassfish:javax.annotation:10.0-b28' }
- 下面我来简单讲解下我对Dagger2的理解
dagger2可以分为三部分,即Moudle、Component、Container,简单来讲我们可以把Container比作自己,把Component比作送餐员,把Moudle比作餐厅。
当我们需要吃饭店的饭的时候,就需要通知送餐员,然后餐厅做好交给送餐员,送餐员在提供给我们。
所以Moudle是帮我们进行构造实例的地方,Component则是需求方和供应方中间的桥梁。 - 有了一个大概理解以后,接下来介绍下Dagger2主要用到的四个注解和它们的作用。
- @Inject:
通常在需要依赖的地方使用这个注解。换句话说,你用它告诉Dagger这个类或者字段需要依赖注入。这样,Dagger就会构造一个这个类的实例并满足他们的依赖。(主要用在Container上面) - @Module:
Modules类里面的方法专门提供依赖,所以我们定义一个类,用@Module注解,这样Dagger在构造类的实例
时候,就知道从哪里去找到需要的依赖。modules的一个重要特征是它们设计为分区并组合在一起(比如说,我们的app中可以有多个组成在一起的modules)。 - @Provide:
在modules中,我们定义的方法是用这个注解,以此来告诉Dagger我们想要构造对象并提供这些依赖。 - @Component:
Components从根本上来说就是一个注入器,也可以说是@Inject@Module的桥梁,它的主要作用就是连接这两个部分。 Components可以提供所有定义了的类型的实例,比如:我们必须用@Component注解一个接口然后列出所有的定义了的类型的实例,然后通过void inject方法把需要依赖的需求方填进去,它就会帮我们把他俩连接起来。
- @Inject:
好了,到这里Dagger2基本就讲完了,下一篇可能会写个小例子给大家看看。
毕竟我是刚刚开始用Dagger2,所以如果哪里写的有问题,欢迎大家前来批评指正,我会进行修改。
Android集成Dagger2
最后编辑于 :
©著作权归作者所有,转载或内容合作请联系作者
- 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
- 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
- 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...