dagger需要注入依賴的地方,需要@inject的註解,共有三種inject方式:identifies injectable constructors, methods, and fields.
constructors首先被注入,然後是method和field,父類中的method和field會先於子類中的method和field注入,同乙個類中的fields和methods注入注入不分先後。當類中含有@inject注釋的成員變數, 卻沒有@inject注釋的建構函式時, dagger將使用類的預設建構函式。若類中缺少@inject注釋, 該類是不能由dagger建立的。
1、constructors
在構造方法新增@inject註解,指明constructor的引數需要dependency,這些引數可以被使用在private或final欄位。需要指出的是乙個類只能有乙個構造方法可以被inject,否則會報:error: types may only contain one @inject constructor.
2、methods
在成員方法新增@inject註解,成員方法不可以是抽象的,指明方法引數需要依賴。一般會這樣用:inject(this)。
3、fields
在成員變數上加@inject,不可以是private或者是final欄位。
@provides 提供的依賴如果沒有提供給子圖,只注入乙個物件例項,建議直接new乙個物件出來,將其它已生成的依賴傳入。如果直接將依賴物件當做引數傳進來,會生成對應的工廠方法,增加程式執行成本。
例如:
注: generating a membersinjector or factory for electricheater. prefer to run the dagger processor over that class instead.
@provides heater provideheater(electricheater electricheater)
@provides heater provideheater()
Dagger2 學習筆記
google官方mvp dagger2架構詳解 從零開始搭建android框架系列 6 參考文章 dagger2 使用詳解 1 inject 和 provide 兩種依賴生成方式區別 a.inject 用於注入可例項化的類,provides 可用於注入所有類 b.inject 可用於修飾屬性 構造器...
dagger2 重點筆記
官方架構例子,裡面有個dagger2的結合的例子 dagger2 通過註解來生成 定義不同的角色,主要的註解有 inject module component provides scope subcomponent 等。簡單地說,通過物件型別傳遞 物件以來,通過 module和 provides 提...
Dagger2 註解 初識
看部落格之前請先走出這個誤區 module和model,前者指建立依賴物件的物件,後者指的依賴的物件 也就是模型bean dagger2的幾個註解 module,提供建立依賴物件的方法。注意 不能有兩個 provides方法返回同乙個model,否則會報以下異常 2.component,鏈結modu...