Dagger2依賴注入框架的使用簡介

2021-10-10 09:01:11 字數 1856 閱讀 7886

配置apt外掛程式(在build.gradle(project:***)中新增如下**)

dependencies
//新增如下**,應用apt外掛程式`

'com.neenbedankt.android-apt'..

.dependencies

別忘了加入lint warning

android 

}

public

class

mainpresenter

public

void

loaddata()

作用:

@inject 帶有此註解的屬性或構造方法將參與到依賴注入中,dagger2會例項化有此註解的類

@module

public

class

mainmodule

@provides

mainview providemainview()

}

作用:

@module 帶有此註解的類,用來提供依賴,裡面定義一些用@provides註解的以provide開頭的方法,這些方法就是所提供的依賴,dagger2會在該類中尋找例項化某個類所需要的依賴。

@component

(modules = mainmodule.

class

)public

inte***ce

maincomponent

作用:

@component 用來將@inject和@module聯絡起來的橋梁,從@module中獲取依賴並將依賴注入給@inject

public

class

mainactivity

extends

implements

maincontract.view

}

我們先看mainactivity裡的**,之前是直接宣告mainpresenter,現在在宣告的基礎上加了乙個註解@inject,表明mainpresenter是需要注入到mainactivity中,即mainactivity依賴於mainpresenter,這裡要注意的是,使用@inject時,不能用private修飾符修飾類的成員屬性。

然後,他們之間並不會憑空建立起聯絡,因此我們想到,肯定需要乙個橋梁,將他們連線起來,也就是下面要介紹的component。

component是乙個介面或者抽象類,用@component註解標註(這裡先不管括號裡的modules),我們在這個介面中定義了乙個inject()方法,引數是mainactivity。然後rebuild一下專案,會生成乙個以dagger為字首的component類,這裡是daggermaincomponent,然後在mainactivity裡完成下面**.

daggermaincomponent.

builder()

.mainmodule

(new

mainmodule

(this))

.build()

.inject

(this

);

依賴注入之Dagger2框架在工程中的使用

在介紹dagger2之前,了解一下使用dagger2的背景 一般情況下,例項man包含到例項car,則例項man依賴例項car。如下圖1 這種直接依賴的情況存在不好的情況,若car建構函式變化,則需要直接修改man類。使用依賴注入用於實現控制反轉的常用方式。控制反轉的基本思想是 借助 第三方 實現具...

依賴注入之Dagger2學習總結

一直認為,任何框架和理論的誕生,一定是為了解決某種特定或者一類共性的場景,沒有任何場景做依託的框架是沒有價值的。同理,在專案進行技術選型,框架選擇的時候,所選的框架一定是滿足使用場景中最方便的框架 請原諒沒有使用最佳這個詞,每個人對於場景的理解不同,且同一種程式設計思想,能有多種框架選擇,很難說那個...

Android框架 dagger2知識點補缺

1.scope機制可以使得在scope存在時保持類的單例 2.沒有指定作用域的 provides方法會在每次注入的時候都建立新的物件 3.乙個沒有scope的元件component不可以依賴乙個有scope的元件component,子元件和父元件的scope不能相同。subcomponent註解的可...