![](https://img-blog.csdnimg.cn/20201014180756738.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
Dagger2
野猿新一
这个作者很懒,什么都没留下…
展开
-
Dagger2最简单的入门
啰嗦几句这几天看Dagger看得晕头转向的,我觉得还不如动手敲几行代码,跑一跑遛一遛,边敲边理解,一口吃不成胖子,先从最简单的开始。既然Dagger的最主要功能就是依赖注入,我就来一个炒鸡简单的demo,在一个Activity中注入一个对象,然后显示这个对象的信息,就这样。一下子讲太多的东西反而会让你望而却步。dependenciesdependencies { anno...原创 2019-06-14 20:48:34 · 430 阅读 · 0 评论 -
Android Dagger2 自定义@Qualifier
先定义两个Qualifier,待会在Module中用于区分两个Person@Qualifier@Retention(RetentionPolicy.RUNTIME)public @interface QualifierStudent {}@Qualifier@Retention(RetentionPolicy.RUNTIME)public @interface Qualifier...原创 2019-06-16 13:16:31 · 671 阅读 · 0 评论 -
Android Dagger2 @Named用法
如下示例代码,在Module中同时提供了两个Person的实例,如果不加以区分,就会报如下错误这时候我们可以在用@Name来加以区分error: [Dagger/DuplicateBindings] com.him.hisapp.Person is bound multiple times:@Provides com.him.hisapp.Person com.him.hisapp....原创 2019-06-15 23:56:14 · 1077 阅读 · 0 评论 -
Android Dagger2 @Module includes属性用法
@Modulepublic class TeacherModule { @Provides public Teacher provideTeacher() { return new Teacher(); }}MainModule通过includes包含TeacherModule@Module(includes = TeacherModule....原创 2019-06-15 23:35:20 · 897 阅读 · 0 评论 -
Android Dagger2 @Component依赖多个Module
Dagger2中Component可以依赖单个Module,写法如下@Component(modules = MainModule.class)public interface MainActivityComponent { void inject(MainActivity activity);}// 或者@Component(modules = {MainModule.c...原创 2019-06-15 23:01:37 · 1172 阅读 · 0 评论 -
android Dagger2 @Module和@Provides 依赖注入
通过@Inject提供对象来依赖注入有以下两个缺点如果要注入的对象属于某个第三方库中的类,那么我们是无法在在这个类的构造方法上添加@Inject注解的 如果要注入的对象是个abstract抽象类或者Interface接口,那么这个类似没有构造方法的,也无法添加@Inject注解要解决以上问题,这时候就需要@Module和@Provides这对好基友上场了二话不说,直接上代码pub...原创 2019-06-15 16:34:23 · 568 阅读 · 0 评论 -
Android Dagger2 @Inject必须具体到某个类,不支持注入子类赋值给父类
我们知道java的多态支持声明一个父类对象,然后实例化一个子类对象赋值给它但是Dagger并不支持这种多态,我们可以写个例子验证下,直接上代码public interface Person { String saySomething();}public class Student implements Person { public String name;...原创 2019-06-15 15:23:33 · 1306 阅读 · 0 评论 -
Android Dagger2 @Inject标识在方法上注入
Dagger除了可以在属性上表示@Inject注入对象外,还可以在方法上标识,如下所示然后调用DaggerMainActivityComponent.create().inject(this)就可以注入对象了public class MainActivity extends AppCompatActivity { // 这里不用标识 Student student;...原创 2019-06-15 13:01:19 · 1470 阅读 · 0 评论 -
Android Dagger2 Component获取某一对象实例
Component常见的方法定义如下所示@Componentpublic interface MainActivityComponent { public Student getStudent();}然后通过DaggerMainActivityComponent.create().inject(this)就可以注入MainActivity的所有被@Inject标识的对象今...原创 2019-06-15 12:17:55 · 600 阅读 · 0 评论 -
android Dagger2 多层注入
简单来说我们要实现的就是在MainActivity中注入一个Student对象,在Student对象中又注入一个Teacher对象实现代码二话不说,直接上代码Studentpublic class Student { public String name; @Inject public Teacher teacher; @Inject ...原创 2019-06-15 11:05:44 · 670 阅读 · 0 评论 -
Android Dagger2 构造方法参数注入
在上一篇文章Dagger2最简单的入门我们写了一个最简单的demo来介绍Dagger2,我们通过@Inject注解构无参造器来注入对象那么如果构造器有参数,且这个参数也需要注入,又该怎么写呢?本篇基于上一篇文章Dagger2最简单的入门,代码片段也是以上一篇文章的demo修改的,所以看本篇之前先看上一篇我们先增加一个Teacher类,其中的无参构造方法用@Inject标识p...原创 2019-06-15 09:54:10 · 1569 阅读 · 2 评论 -
Android Dagger2 @Component的dependencies属性用法
一个Component可以通过dependencies依赖另一个Component,可以获取到另一个Component提供的依赖具体代码如下:public interface Person { String saySomething();}public class Student implements Person { public String name;...原创 2019-06-16 15:02:16 · 1459 阅读 · 0 评论