一般在須要依賴的地方使用這個註解。換句話說,你用它告訴Dagger這個類或者字段須要依賴注入。這樣,Dagger就會構造一個這個類的實例並知足他們的依賴。緩存
Modules類裏面的方法專門提供依賴,因此咱們定義一個類,用@Module註解,這樣Dagger在構造類的實例的時候,就知道從哪裏去找到須要的依賴。modules的一個重要特徵是它們設計爲分區並組合在一塊兒(好比說,在咱們的app中能夠有多個組成在一塊兒的modules)。app
在modules中,咱們定義的方法是用這個註解,以此來告訴Dagger咱們想要構造對象並提供這些依賴。全部的Provides方法必須屬於Module.ide
Components從根本上來講就是一個注入器,也能夠說是@Inject和@Module的橋樑,它的主要做用就是鏈接這兩個部分。 Components能夠提供全部定義了的類型的實例,好比:咱們必須用@Component註解一個接口而後列出全部的@Modules組成該組件,若是缺失了任何一塊都會在編譯的時候報錯。全部的組件均可以經過它的modules知道依賴的範圍。設計
註解做用域,經過自定義註解限定對象的做用範圍,(如@PerActivity自定義註解,限定對象的存活時間和Activity一致)。對象
單例,使用@Singleton註解以後,對象只會被初始化一次,以後的每次都會被直接注入相同的對,@Singleton 就是一個內置的做用域。接口
當類的類型不足以鑑別一個依賴的時候,咱們就可使用這個註解標示。例如:在Android中,咱們會須要不一樣類型的context,因此咱們就能夠定義 qualifier註解「@ForApplication」和「@ForActivity」,這樣當注入一個context的時候,咱們就能夠告訴 Dagger咱們想要哪一種類型的context。作用域
重用,首次使用緩存起來重複使用it
@Qualifier 限定符 @Named 命名,爲@Qualifier的實現註解io
@IntoSet、@ElementsIntoSet、@IntoMap編譯