Dagger學習筆記

@Inject 提供依賴的構造函數,或者須要依賴的成員變量git

@Module 提供依賴,實例化的地方( 使用module實例化,方便測試的時候替換成其餘對象,而這也是和構造方法注入的區別,若是用構造方法注入,則作不到測試的時候隨意替換)github

@Component 一個鏈接者,把module和須要依賴的地方鏈接起來函數

步驟1:查找Module中是否存在建立該類的方法。
步驟2:若存在建立類方法,查看該方法是否存在參數
步驟2.1:若存在參數,則按從步驟1開始依次初始化每一個參數
步驟2.2:若不存在參數,則直接初始化該類實例,一次依賴注入到此結束
步驟3:若不存在建立類方法,則查找Inject註解的構造函數,看構造函數是否存在參數
步驟3.1:若存在參數,則從步驟1開始依次初始化每一個參數
步驟3.2:若不存在參數,則直接初始化該類實例,一次依賴注入到此結束

 singleton scope can not be used in unscope component測試

beforespa

 

after3d

void inject(Activity aty); void inject(Fragment fragment);code

per activity(每一個Activity一個Activity)component

 

https://github.com/chiuki/friendspell chiuki寫的,包含了dagger2與測試對象

相關文章
相關標籤/搜索