Dagger2+RxJava+Retrofit+mvp结构来进行开发,虽然Dagger2已经出来好久了,但一直没有进行总结,今天所以有必要总结一下Dagger2。...1.什么是Dagger2 Dagger中文意思是匕首,Dagger2是Dagger的第二个版本,之前的Dagger已经放弃维护了,Dagger2用官方的话来说就是: ?...:dagger:2.x' annotationProcessor 'com.google.dagger:dagger-compiler:2.x' } If you're using classes...你就需要添加dagger-android:xxx依赖。 2.1.为什么要添加dagger-android2.x依赖?...虽然仅仅添加dagger-2x也可以实现依赖注入,但如果添加了dagger-android2.x的依赖就可以避免上面提到的问题了。
dagger2,改bug和做需求总是一脸懵逼,看了些文档介绍,和大多数学习者一样从Dependency Injection、注解概念等等开始了解,然后敲代码上手,在此记录下学习心得。...小结 回顾下使用注解的步骤: 1.build.gradle中添加dagger2依赖 2.使用@Inject标注在构造函数和被引用的成员变量上 3.新建MainActivityComponent接口,并用...,而不用dagger2只要new一次就可以了(如下图),但是两者最终都是一条依赖链 ? 总结 整个流程: ?...因此如果两种同时存在,会选择@Module、@Providers,而另一种只是个“备胎”… 2 学习资料 当然dagger2还有很多很强大的功能,待续 github dagger介绍(https://github.com.../codepath/android_guides/wiki/Dependency-Injection-with-Dagger-2) dagger官网(https://google.github.io/dagger
Guice比较成熟,Dagger2主要用于Android。虽然都是google维护的,但Dagger2远比guice更新的频率高。...再一个是,Dagger2不同于guice的运行时注入,编译时生成代码的做法很好。提前发现问题,更高的效率。 还是那句话,百度到的dagger2资料看着一大堆,大都表层,而且和Android集成很深。...以下来自详解Dagger2 @Inject: 通常在需要依赖的地方使用这个注解。换句话说,你用它告诉Dagger这个类或者字段需要依赖注入。...@Scope: Scopes可是非常的有用,Dagger2可以通过自定义注解限定注解作用域。...然而,毕竟dagger2是为了Android而打造的,为了适应其复杂的继承体系和生命周期的限制,dagger提供了SubComponent模型。也就是子组件。
Dagger也是一个IOC框架,对于大型项目,我们有必要去学习使用它 一、构造函数注入 dagger拥有两种方式注入对象,一种是利用@Inject注解构造函数 1.gradle中导入dagger依赖 在...implementation "com.google.dagger:dagger:2.40.4" kapt "com.google.dagger:dagger-compiler:2.40.4"...RemoteDataSource, var localDataSource: LocalDataSource ) 3.使用@Component注解一个接口,表示一个注入中间件 对于需要注入的对象,dagger...implementation 'com.squareup.retrofit2:retrofit:2.9.0' implementation "com.squareup.retrofit2:converter-scalars...://gitee.com/aruba/dagger-application.git
参考 Android_Dagger2篇——从小白最易上手的角度 + 最新dagger.android 都是套路——Dagger2没有想象的那么难 一、无module方式,无参构造 (最简单...在需要实例化的类中,构造无参构造方法,注解@Inject 必须是无参构造方法 @Inject public Student() { } 2....Inject 可以带有参数 @Inject public Student(String name, int age) { this.name = name; this.age = age; } 2.
Dagger2简介: Dagger2是Dagger1的分支,由谷歌公司接手开发,目前的版本是2.0。Dagger2是受到AutoValue项目的启发。...dagger2这样的依赖注入框架对MVP架构来说,是最好的解耦工具,可以进一步降低modle-view-presenter之间的耦合度。 2....使用 Dagger2 创建依赖对象,我们就不用手动初始化了。...Dagger2注解解释: 接下来介绍Dagger2中的每一个概念: @Inject: 通常在需要依赖的地方使用这个注解。换句话说,你用它告诉Dagger这个类或者字段需要依赖注入。...@Scope: Scopes可是非常的有用,Dagger2可以通过自定义注解限定注解作用域。
Dagger2是一种依赖注入框架,用来帮我们进行类初始化的工作,通常配合MVP架构模式使用。...apt命令 classpath 'com.neenbedankt.gradle.plugins:android-apt:1.8' //添加apt命令 在Moudle的build.gradle中添加dagger2...的依赖 //dagger2 apt 'com.google.dagger:dagger-compiler:2.0.2' //指定注解处理器 compile 'com.google.dagger:...有了一个大概理解以后,接下来介绍下Dagger2主要用到的四个注解和它们的作用。 @Inject: 通常在需要依赖的地方使用这个注解。换句话说,你用它告诉Dagger这个类或者字段需要依赖注入。...好了,到这里Dagger2基本就讲完了,下一篇可能会写个小例子给大家看看。 毕竟我是刚刚开始用Dagger2,所以如果哪里写的有问题,欢迎大家前来批评指正,我会进行修改。
经过一段时间的纠结和水深火热,终于渐渐领悟了Dagger2,在此分享一下学习心得,希望同样对Dagger2水深火热的你们有点帮助。 接下来会分享一系列Dagger2内容。...Dagger2中常用的注解名词以及含义 - @Component :用于注解一个interface, 比如: @Singleton @Component(modules = {AppModule.class...编译代码:Dagger2会自动生成一个叫DaggerAppComponent的类,该类会根据@Component(modules = {AppModule.class, RetrofitModule.class...- @Singleton:单例-Dagger2帮我们实现的一个@Scope作用域。...} @Inject//当构造函数被执行之后,立马执行改方法 public void setPresenter(){ xxx; } } -最关键的是执行编译之后 Dagger2
今天分享一下Android开发中的一个利器 Dagger2 请跟着小编一步一步来了解它吧~~ 导入 Dagger2 依赖 网上不少资源说要在Project和module下的build.gradle分别添加以下依赖...正确方式是直接在module下添加如下依赖就行,不需要增加插件什么的 annotationProcessor 'com.google.dagger:dagger-compiler:' + rootProject.dagger2...以上正确配置之后,就可以在代码里使用Dagger2了 参考链接: Google官方文档 https://google.github.io/dagger Google官方MVP+Dagger2架构详解...http://www.jianshu.com/p/01d3c014b0b1 Android常用开源工具(1)-Dagger2入门 http://blog.csdn.net/duo2005duo/article
,那么在这一章中,我们将逐渐入门Dagger2。...那么接下来我们用Dagger2的方式,来做做试试,先不管他们之间的区别,just do it。做出来效果之后再回过头来反思。...Dagger2依赖注入 下面让我们一步一步走下去: 1 在modle的build.gradle文件中添加 annotationProcessor 'com.google.dagger:dagger-compiler...但是Dagger2为了解耦,提供了一个中介,@Component注解,也就是我们的第4步。...这章主要是入门了Dagger2,下面我们会了解 1 为什么要使用Dagger2来替代文章一开头的写法? 2 如果@Inject注解的构造器有多个怎么办? 3 如果存在依赖链怎么办呢?
首先,如果想要学好dagger,就必须要了解什么是“依赖注入”,因为dagger2是实现依赖注入的一个框架。...那么,我们的Dagger2能给我们带来什么呢?能达到什么效果呢?为什么要使用Dagger2呢?这一大堆问题我们将需要一个一个突破,弄懂一个问题之后,再进行下一个问题,不然,讲完之后,会让你云里雾里。...public class Person { // dagger2直接使用@Inject @Inject Car car; public Person(Car car) {...this.car = car; } public void setCar(Car car){ this.car = car; } } Dagger2 带给我们的效果就是直接使用@Inject...待我们学完之后,再回过头来回答为什么要使用Dagger2?和前面的注入方式相比,有什么好处? 下面的我们将通过demo代码形式来使用Dagger2,因为我们都是程序员,代码胜过千言万语~~
注意,控制反转不等同于依赖注入,控制反转还有一种实现方式叫“依赖查找” Dagger2 Dagger2的作用目的:提供对象实例 1、使用@Inject标注构造函数来提供依赖的对象实例的方法 @Inject...dagger2.png 2、用@Provides标注的方法来提供依赖实例,方法的返回值就是依赖的对象实例,@Provides方法必须在Module中,Module 即用@Module标注的类 Module...FriendComponent 的 Scope 不能是 @Singleton,因为 Dagger 2 中 @Singleton 的 Component 不能依赖其他的 Component。...8、@BindsInstance 用于再创建Component的时候绑定依赖实例,用以注入 总结: 1、Dagger2 依赖注入,目的就是提供对象,在dagger2提供对象有两种方式@Inject...和 @Module 2、每个需要依赖注入的类,都需要一个Component类 3、Qualifier(限定符):用于module提供多同个类的多个对象的 4、Scope的作用可以让注入的对象复用
Dagger2 是一个Android依赖注入框架。...我们初步来看,会发现Dagger2优势不大,没什么吸引人的,那么请你静下心来,看完再得出结论。...test3 = new Test3(); } } 如果我们改为使用Dagger2的方式的话,则可以写成如下方式: 1 创建一个类 使用了注解方式,使得Dagger2能找到它。...我先说下Dagger2的注释思路:关键的点是@Component,这个是个连接器,用来连接提供方和使用方的,所以它是桥梁。...这里稍安勿躁,先来看相同效果的另一个注释,@Name,这个是Dagger2自带的一个让区分,效果如下: ? ? ? ?
DaggerDagger2Components_BaseComponents .builder() .build()
Dagger2 使用总结(三) 之前两篇主要针对Dagger2的基础库进行了简单的总结,本篇会重点讲述Dagger2的Android支持库,它对Android组件进行了定制,使代码更加简洁。...DaggerApplication来源于支持库且有两个: dagger.android.DaggerApplication:支持普通组件,不支持扩展(v4,v7)组件dagger.android.supportDaggerApplication...:支持扩展组件,不支持普通组件 如果项目中需要支持两种类型的组件,可以采用上述代码中的形式,即: 继承dagger.android.DaggerApplication并实现HasSupportFragmentInjector...相比于普通的Dagger2使用,我们省略了以下步骤: ? ? ? @Binds 类似于@Provides,在使用接口声明时使用,区别是@Binds用于修饰抽象类中的抽象方法的,看下实例吧。
这篇文章会分享一下实际应用中的Dagger2如何使用,以及Dagger2通过apt插件如何给我们生成代码,以及生成的代码之间的关联。...这里用的是MVP+Retrofit2+RxJava,如果不熟悉可以先不管,因为不会涉及太多,而这篇内容主要分享的是Dagger2。...IRetrofitRequest 实例对象必须要用@Provides标注,该对象是单例的所以用@Singleton标注,这里为什么用这两个注解标注之后就能实现为AppComponent提供单例的实例,稍后会进行Dagger2...因为Dagger2需要这些标注通过apt插件自动生成代码。 在AppComponent中提供的IRetrofitRequest单例对象如何在Application中使用呢?...static AppComponent getComponent() { return appComponent; } } 上面代码中的DaggerAppComponent是Dagger2
Dagger2是一套依赖注入框架,在编译期间自动生成代码,创建依赖的对象。项目中使用Dagger2可以降低代码的耦合度。...使用Dagger2库,重点是了解其中的各种注解并熟练使用,下面看一下具体用例。...注:为了能够更直观地了解Dagger2的使用,本文用例会尽量简化不相关的业务逻辑 环境配置 配置下build.gradle即可 ?...这样看起来比不使用Dagger2注入对象要简单很多,但是如果对象引用的地方很多,构造复杂,那么一旦改变构造,工作量会很大,这也是Dagge2最重要的优势——解耦。 ?...除了@Inject和@Component之外,Dagger2中还有其他注解,下文会说明。
Dagger2 是一个Android依赖注入框架。...我们初步来看,会发现Dagger2优势不大,没什么吸引人的,那么请你静下心来,看完再得出结论。...test3 = new Test3(); } } 如果我们改为使用Dagger2的方式的话,则可以写成如下方式: 1 创建一个类 使用了注解方式,使得Dagger2能找到它。...我先说下Dagger2的注释思路:关键的点是@Component,这个是个连接器,用来连接提供方和使用方的,所以它是桥梁。...9 终极boss ,Map方式 再加一点,生成的代码位置在\dagger2Demo\app\build\generated\source\apt\debug\com\xm\dagger2demo,可以直接看生成代码
https://medium.com/@harivigneshjayapalan/dagger-2-for-android-beginners-di-part-i-f5cc4e5ad878 Dagger2...Dagger2 是编译时框架,会在编译时根据你的注解配置生成需要的代码。 ---- 下面是我对 Dagger2 中的常用注解的理解。...理解了这些注解的意思和作用,基本就学会了 Dagger2 的基本用法了。...常用注解 @Inject 这个注解有两个作用: 修饰需要注入的属性,Dagger2 会自动注入 修饰被注入的类的构造方法上;Dagger2 会在需要的时候通过这个注解找到构造函数自动构造对象注入 public.../dagger-2-for-android-beginners-dagger-2-part-i-f2de5564ab25
Dagger2,依赖注入框架,一个刚接触时感觉麻烦,用久了就会“嘴上说不要,身体却很诚实”的开发润滑剂(◐‿◑)。...(本文为拖更而生) 一、Dagger2 介绍 1、为什么使用dagger2 谁用谁知道Σ( ̄。...困了我们就开始咯 2、简单原理介绍 Dagger2 可以理解为一套开发规范,遵守这套规范编写的代码,通过Dagger2 的运行时注解,在编译时自动生成模版代码,已达到注入和复用的目的。 ...那么了解完这套模版规范,Dagger2 将不再神秘,“深入浅出”“指日可待”(˶‾᷄ ⁻̫ ‾᷅˵)啊。...总结图 三、稍微再“深入” 1、Scope 让我们再稍微深入一点去了解Dagger2吧,生命周期是值得关心的。