Dagger2 | 前言

在 Android 應用開發(fā)中旭贬,手動進行依賴項的管理瘩将,可能會出現(xiàn)很多問題吟税,尤其是多人合作的項目,這些問題會變得越來越棘手姿现,最終導致整個項目陷入泥潭肠仪。為了避免這些問題,我們推薦使用 Dagger2 框架备典,它只需要前期做一些工作量异旧,之后即使項目規(guī)模變大,項目復雜度提高提佣,也可以很靈活的管理依賴吮蛹,避免泛濫成災的壞味道代碼。

官方簡介:

A fast dependency injector for Java and Android.
Dagger is a compile-time framework for dependency injection. It uses no reflection or runtime bytecode generation, does all its analysis at compile-time, and generates plain Java source code.
Dagger is actively maintained by the same team that works on Guava. Snapshot releases are auto-deployed to Sonatype's central Maven repository on every clean build with the version HEAD-SNAPSHOT. The current version builds upon previous work done at Square.

簡單翻譯:

一個 Java 和 Android 上的快速依賴注入器拌屏。
Dagger2 是依賴注入的編譯時框架潮针。它不使用反射或運行時字節(jié)碼生成,而是在編譯時進行所有分析倚喂,并生成原生的 Java 源代碼每篷。
Dagger2 由 Guava 團隊積極維護。快照發(fā)布會自動部署到 Sonatype 的中央 Maven 庫中焦读,每次使用 HEAD-SNAPSHOT 版本號進行干凈的構(gòu)建子库。當前版本建立在 Square 的 Dagger 之上。

概述

Java 中有很多優(yōu)秀的依賴注入框架矗晃,比如 Guice仑嗅、Spring Framework 等等,它們簡單易用喧兄、社區(qū)活躍无畔、生態(tài)豐富,有大量可供參考的開源項目吠冤,但它們都是基于反射的解決方案浑彰,對 Android 來說,有許多開發(fā)上和性能問題上的困擾拯辙。

Dagger2 的目標正是為了解決這些困擾郭变。它可以讓依賴隨 Activity 朝生暮死,也可以讓依賴與 Application 同舟共濟涯保,這在內(nèi)存資源極為珍貴的 Android 系統(tǒng)中尤其重要诉濒。同時,所有的代碼在編譯時生成夕春,可以避免反射帶來的性能損耗未荒,以及運行時才能發(fā)現(xiàn)的異常,進而提升開發(fā)體驗及志。

入門 Dagger2 只需要關(guān)注 @Inject@Component片排。前者主要注解在構(gòu)造函數(shù)和字段上,后者則注解在接口(或抽象類)上速侈。注解構(gòu)造函數(shù)可以生成實例率寡,注解字段可以注入實例,而注解接口則可以自動完成依賴注入倚搬。

當你熟悉 Dagger2 后冶共,我們推薦使用 Dagger2 for Android 擴展庫,它提供標準的 Android 組件抽象類每界,以及依賴注入的工具類捅僵,使用它們可以消除裹腳布代碼,讓開發(fā)人員專注于業(yè)務邏輯眨层。

最后命咐,當你完全熟悉 Dagger2 的細節(jié),你可以考慮使用 Hilt 框架谐岁,它是在 Dagger2 的基礎上構(gòu)建醋奠,提供一整套 Android 中依賴注入的標準解決方案榛臼。

目錄

準備

討論本系列內(nèi)容尤蛮,需要準備基本的 Android 開發(fā)環(huán)境:

  • JDK 1.8+
  • Android Studio 4.0+
  • Android SDK 19+

創(chuàng)建新的項目,打開 app 模塊中的 build.gradle 文件斯议,聲明 Dagger2 依賴:

dependencies {
    // other dependencies

    implementation 'com.google.dagger:dagger:2.28'
    annotationProcessor 'com.google.dagger:dagger-compiler:2.28'
}

了解更多細節(jié)产捞,請參考:Dagger2 For Gradle 文檔。

點擊右上角的 Sync Now哼御,自動下載 Dagger2 框架:

Dagger2 框架

Dagger2 所依賴的 JSR330 依賴注入標準框架:

JSR330 框架

說明

本系列聚焦 Dagger2 中的主要注解坯临,結(jié)合 API 描述,由淺入深恋昼,了解它們的用法和功能看靠,再通過實際的應用場景,解釋為什么要用它們液肌。同時也從開發(fā)者角度挟炬,展示解決問題的思路,希望可以幫助大家完全掌握 Dagger2 框架嗦哆。

如果你的時間緊張谤祖,想要快速入門,建議參閱以下資料:

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末吝秕,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子空幻,更是在濱河造成了極大的恐慌烁峭,老刑警劉巖,帶你破解...
    沈念sama閱讀 218,122評論 6 505
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件秕铛,死亡現(xiàn)場離奇詭異约郁,居然都是意外死亡,警方通過查閱死者的電腦和手機但两,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,070評論 3 395
  • 文/潘曉璐 我一進店門鬓梅,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人谨湘,你說我怎么就攤上這事绽快〗嫔ィ” “怎么了?”我有些...
    開封第一講書人閱讀 164,491評論 0 354
  • 文/不壞的土叔 我叫張陵坊罢,是天一觀的道長续担。 經(jīng)常有香客問我,道長活孩,這世上最難降的妖魔是什么物遇? 我笑而不...
    開封第一講書人閱讀 58,636評論 1 293
  • 正文 為了忘掉前任,我火速辦了婚禮憾儒,結(jié)果婚禮上询兴,老公的妹妹穿的比我還像新娘。我一直安慰自己起趾,他們只是感情好诗舰,可當我...
    茶點故事閱讀 67,676評論 6 392
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著阳掐,像睡著了一般始衅。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上缭保,一...
    開封第一講書人閱讀 51,541評論 1 305
  • 那天汛闸,我揣著相機與錄音,去河邊找鬼艺骂。 笑死诸老,一個胖子當著我的面吹牛,可吹牛的內(nèi)容都是我干的钳恕。 我是一名探鬼主播别伏,決...
    沈念sama閱讀 40,292評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼忧额!你這毒婦竟也來了厘肮?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,211評論 0 276
  • 序言:老撾萬榮一對情侶失蹤睦番,失蹤者是張志新(化名)和其女友劉穎类茂,沒想到半個月后,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體托嚣,經(jīng)...
    沈念sama閱讀 45,655評論 1 314
  • 正文 獨居荒郊野嶺守林人離奇死亡巩检,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,846評論 3 336
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了示启。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片兢哭。...
    茶點故事閱讀 39,965評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖夫嗓,靈堂內(nèi)的尸體忽然破棺而出迟螺,到底是詐尸還是另有隱情冲秽,我是刑警寧澤,帶...
    沈念sama閱讀 35,684評論 5 347
  • 正文 年R本政府宣布煮仇,位于F島的核電站劳跃,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏浙垫。R本人自食惡果不足惜刨仑,卻給世界環(huán)境...
    茶點故事閱讀 41,295評論 3 329
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望夹姥。 院中可真熱鬧杉武,春花似錦、人聲如沸辙售。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,894評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽旦部。三九已至祈搜,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間士八,已是汗流浹背容燕。 一陣腳步聲響...
    開封第一講書人閱讀 33,012評論 1 269
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留婚度,地道東北人蘸秘。 一個月前我還...
    沈念sama閱讀 48,126評論 3 370
  • 正文 我出身青樓,卻偏偏與公主長得像蝗茁,于是被迫代替她去往敵國和親醋虏。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 44,914評論 2 355

推薦閱讀更多精彩內(nèi)容