Google Dagger2 学习笔记

泛型介绍

  • @Component 指定一个或多个Module class ; 负责指向需要被注入的变量
  • @Module 实力化对象的管理类,使用Component时需要指定一个或多个
  • @Provides 实例化对象
  • @Inject 需要被注入的变量
Google Dagger2 学习笔记_第1张图片
泛型介绍
  • inject声明被依赖注入的变量,Module中实例化对象,Component中进行变量和实例化对象的绑定

  • 最后是init调用

  • mark Build后,会通过apt对应生成DaggerMainComponent、MainActivity_MembersInjector、MainModel_ProviderPresenterFactory
    这三个类

  • DaggerMainComponent中核心就是将变量所在类对象传入,Module的创建

  • 这张图中的mainModel是在DaggerMainComponent.builder().build().inject(this);这句中的build函数时进行创建的


    mainModel
  • 这里会创建MainModel


    Google Dagger2 学习笔记_第2张图片
    这里会创建MainModel
  • MainActivity_MembersInjector这个类核心就是进行赋值
Google Dagger2 学习笔记_第3张图片
MainActivity_MembersInjector
  • 这里是调用了Module中自己写的@Provides注解


    2.jpg
  • @Module 相当于实例化的管理类,负责都创建哪些类型的实例化

  • @Provides 是某个类型的具体实例化

  • @Inject 需要被注入的变量

  • @Component

    1. 指定一个或多个Module class ;
    2. 负责指向需要被注入的变量(实际是MainActivity_MembersInjector类中进行赋值)
  • DaggerMainComponent 是有@Component apt出来的实现类

  • MainModel_ProviderPresenterFactory 工厂,用来创建Module中的所有@Provides

AndroidProcessor

https://github.com/google/dagger/blob/master/java/dagger/android/processor/AndroidProcessor.java

你可能感兴趣的:(Google Dagger2 学习笔记)