天天看點

Android內建Dagger2

  • Dagger2是一種依賴注入架構,用來幫我們進行類初始化的工作,通常配合MVP架構模式使用。
    • 在Project的build.gradle中添加apt指令
    classpath 'com.neenbedankt.gradle.plugins:android-apt:1.8' //添加apt指令
    • 在Moudle的build.gradle中添加dagger2的依賴

    //dagger2 apt 'com.google.dagger:dagger-compiler:2.0.2' //指定注解處理器 compile 'com.google.dagger:dagger:2.0.2' //dagger公用api provided 'org.glassfish:javax.annotation:10.0-b28' //添加android缺失的部分javax注解

    如果同時依賴了butterknife那麼可以采用如下的配置 apply plugin: 'com.android.application' //添加apt指令 apply plugin: 'android-apt' dependencies { //butterknife compile 'com.jakewharton:butterknife:8.4.0 apt 'com.jakewharton:butterknife-compiler:8.4.0' //dagger2 //指定注解處理器 apt 'com.google.dagger:dagger-compiler:2.0.2' //dagger公用api compile 'com.google.dagger:dagger:2.0.2' //添加android缺失的部分javax注解 provided 'org.glassfish:javax.annotation:10.0-b28' }

    • 下面我來簡單講解下我對Dagger2的了解

      dagger2可以分為三部分,即Moudle、Component、Container,簡單來講我們可以把Container比作自己,把Component比作送餐員,把Moudle比作餐廳。

      當我們需要吃飯店的飯的時候,就需要通知送餐員,然後餐廳做好交給送餐員,送餐員在提供給我們。

      是以Moudle是幫我們進行構造執行個體的地方,Component則是需求方和供應方中間的橋梁。

    • 有了一個大概了解以後,接下來介紹下Dagger2主要用到的四個注解和它們的作用。
      • @Inject:

        通常在需要依賴的地方使用這個注解。換句話說,你用它告訴Dagger這個類或者字段需要依賴注入。這樣,Dagger就會構造一個這個類的執行個體并滿足他們的依賴。(主要用在Container上面)

      • @Module:

        Modules類裡面的方法專門提供依賴,是以我們定義一個類,用@Module注解,這樣Dagger在構造類的執行個體

        時候,就知道從哪裡去找到需要的依賴。modules的一個重要特征是它們設計為分區并組合在一起(比如說,我們的app中可以有多個組成在一起的modules)。

      • @Provide:

        在modules中,我們定義的方法是用這個注解,以此來告訴Dagger我們想要構造對象并提供這些依賴。

      • @Component:

        Components從根本上來說就是一個注入器,也可以說是@Inject@Module的橋梁,它的主要作用就是連接配接這兩個部分。 Components可以提供所有定義了的類型的執行個體,比如:我們必須用@Component注解一個接口然後列出所有的定義了的類型的執行個體,然後通過void inject方法把需要依賴的需求方填進去,它就會幫我們把他倆連接配接起來。

    好了,到這裡Dagger2基本就講完了,下一篇可能會寫個小例子給大家看看。

    畢竟我是剛剛開始用Dagger2,是以如果哪裡寫的有問題,歡迎大家前來批評指正,我會進行修改。