泛型介紹
- @Component 指定一個或多個Module class ; 負責指向需要被注入的變量
- @Module 實力化對象的管理類,使用Component時需要指定一個或多個
- @Provides 實例化對象
- @Inject 需要被注入的變量
泛型介紹
inject聲明被依賴注入的變量,Module中實例化對象蛔外,Component中進行變量和實例化對象的綁定
最后是init調(diào)用
mark Build后耻涛,會通過apt對應(yīng)生成DaggerMainComponent优训、MainActivity_MembersInjector呢燥、MainModel_ProviderPresenterFactory
這三個類DaggerMainComponent中核心就是將變量所在類對象傳入搁吓,Module的創(chuàng)建
-
這張圖中的mainModel是在DaggerMainComponent.builder().build().inject(this);這句中的build函數(shù)時進行創(chuàng)建的
mainModel -
這里會創(chuàng)建MainModel
這里會創(chuàng)建MainModel
- MainActivity_MembersInjector這個類核心就是進行賦值
MainActivity_MembersInjector
-
這里是調(diào)用了Module中自己寫的@Provides注解
2.jpg
@Module 相當于實例化的管理類原茅,負責都創(chuàng)建哪些類型的實例化
@Provides 是某個類型的具體實例化
@Inject 需要被注入的變量
-
@Component
- 指定一個或多個Module class ;
- 負責指向需要被注入的變量(實際是MainActivity_MembersInjector類中進行賦值)
DaggerMainComponent 是有@Component apt出來的實現(xiàn)類
MainModel_ProviderPresenterFactory 工廠,用來創(chuàng)建Module中的所有@Provides
AndroidProcessor
https://github.com/google/dagger/blob/master/java/dagger/android/processor/AndroidProcessor.java