1. 程式人生 > >Dagger2 用@Qualifier解決依賴衝突

Dagger2 用@Qualifier解決依賴衝突

Dagger2中,如果Module中有@Provides標註的多個方法同事提供同一型別的依賴,IDE編譯時在會報錯,通俗的講就是,Dagger2不知道該用哪個方法提供的依賴。
這裡可以通過@Qualifier來解決,@Qualifier是javax.inject包下的註解,限定識別符號。

@Qualifier自定義註解:

@Qualifier
@Documented
@Retention(RetentionPolicy.RUNTIME)
public @interface Test1Type {
    String value() default "";
}

建立多個同時提供同一型別的Module:

@Module
public class Test1Module {
    private AClass aClass;//測試類
    public Test1Module(AClass aClass){
        this.aClass = aClass;
    }

    @Test1Type("test1")
    @Provides
    public AClass getAClass(){
        return this.aClass;
    }

    @Test1Type("test2")
    @Provides
    public AClass getAClass2
(){ return this.aClass; } }

使用:

 @Test1Type("test1")
 @Inject
 AClass aClass1;

@Test1Type("test2")
 @Inject
 AClass aClass2;

相關推薦

Dagger2 @Qualifier解決依賴衝突

Dagger2中,如果Module中有@Provides標註的多個方法同事提供同一型別的依賴,IDE編譯時在會報錯,通俗的講就是,Dagger2不知道該用哪個方法提供的依賴。 這裡可以通過@Qualifier來解決,@Qualifier是javax.injec

virtualenv 執行python 解決依賴衝突問題 尤其是django那種蛋疼的版本問題

Create a python virtual environment and install python dependencies. cd evalai virtualenv venv source venv/bin/activate # run this command eve

Maven依賴調解:解決依賴衝突

Maven 依賴調解的第一原則:路徑最短者優先。 假設專案 A 中存在如下依賴關係: A -> B -> C -> X(V1) A -> D -> X(V2) X(V1)的路徑深度為 3,X(V2) 的路徑深度為 2,X(V2) 的路徑深度比

Gradle解決依賴衝突

問題描述   有時候專案依賴的com.android.support:support-v4的版本會遇到和其他依賴庫中com.android.support:support-v4的版本發生衝突的情況。例如我專案中使用的22.2.1版本,但是引入的最新的Fresco中依賴的是23的版本,由於Fragment的原

maven 解決依賴衝突 omiit for conflict

maven依賴衝突,原因: 衝突寫法如下: <dependency> <groupId>org.apache.httpcomponents</groupId> <ar

gradle 解決依賴衝突問題

SLF4J: Class path contains multiple SLF4J bindings. SLF4J: Found binding in [jar:file:/C:/Users/Administrator/.gradle/caches/modules-2/fi

idea依賴樹匯出到檔案中 解決依賴衝突的神兵利器

最近被不同版本的依賴jar包搞的焦頭爛額,查詢起來特別的累,用idea的依賴jar檢視也沒有找到原因,最後發現是父pom下的某個子專案引入的springboot的版本與其他子專案不一致導致的,找到這個的很簡單的辦法,將依賴的版本樹列印到本地檔案中,然後就可以搜尋不同的依賴版本了。 匯出來的命令特

Android Studio解決依賴衝突

編譯的時候報這個: 所以人家都告訴你了,就是有多個庫同時又引用了rxjava這個庫,然後就不知道用拿個版本了。。。 原因就是我的專案中bmob和rxvolley都用到了rxjava,只要在module的build.gradle下稍微更改下新增依賴的語句就可以了

gradle 解決依賴衝突

1.檢視依賴關係    gradle XXX:dependencies.   XXX表示你想列印的module的name    2.使用傳遞(transitive)\排除(exclude)\強制(force)解決衝突:    compile('org.hibernate:hi

【maven】maven檢視專案依賴解決依賴衝突的問題

一、問題 專案開發過程中,經常會遇到jar衝突,然後maven根據自己的規則進行衝突解決,導致專案在執行的過程中報錯。 1、如何檢視當前專案的maven的依賴樹? 2、如何從依賴樹中找到自己預期的版本,是被那個jar給覆蓋了? 3、如何進行依賴衝突解決?   二、解決問題 1、如何檢視

解決依賴衝突

 configurations.all {    resolutionStrategy.eachDependency { DependencyResolveDetails details ->        def requested = details.requested        if (req

Android解決依賴衝突:Program type already present

今天在編譯專案時,報錯: Program type already present: android.content.pm.IPackageDeleteObserver 就是依賴衝突,後來解決就是 雙擊shift,全域性查詢衝突的這個IPackageDeleteObserve ,發現

Python Error: “ImportError: No module named six”,自動安裝解決依賴問題

erro alt win med src 問題 clas 環境 下使用   在初次運行帶有matplotlib包的程序時,被告知了缺少模塊(如標題所示)。搜索調查後發現在自己安裝的python中確實缺少此安裝包,接下來,進行了下載、安裝、運行,又少了一個模塊,再下載、再運行

flutter/dart 依賴衝突解決方案

有時候flutter更新sdk版本後不知道該不該更新 有時候pub庫更新後和自己的其他類庫發生了衝突 類似於圖上的情況 遇到這樣的問題應該怎麼解決呢 我們一步步解決 首先,這種依賴一般是pub中引用的,先檢視下原作者有沒有最新版,也許就解決了呢 無奈我們用到的類庫是

【工作記錄】Found Banned Dependency: commons-logging:commons-logging 依賴衝突解決

【問題概述】      在使用maven構建專案的時候,偶爾會遇到jar包依賴衝突的問題,比如: [WARNING] Rule 2: org.apache.maven.plugins.enforcer.BannedDependencies failed with m

Android使用gradle依賴管理、依賴衝突終極解決方案

Android使用gradle依賴管理、依賴衝突終極解決方案 在Android開發中,相信遇到關於版本依賴的問題的同學有不少。雖然Android Studio一般都會自動幫我們去重,但是有時候去重失敗了還是需要手動處理。在這裡總結下自己長期遇到的各類問題的解決方式。 統一版本管理

maven依賴衝突解決方案

1. 傳遞依賴   1.1 什麼是傳遞依賴     如果A依賴於B,B依賴於C,則稱B是A的直接依賴,C是A的傳遞依賴   1.2 傳遞依賴衝突     如A依賴於B,B依賴於C(1.1版本),同時A依賴於D,D也依賴於C(2.1版

Flutter | 如何優雅的解決依賴版本衝突

https://www.jianshu.com/p/3af57fbb7efe 前言 Google推出flutter這樣一個新的高效能跨平臺(Android,ios)快速開發框架之後,被業界許多開發者所關注。我在接觸了flutter之後發現這個確實是一個好東西,好東西當然要和大家分享,對吧。

IDEA下解決Maven依賴衝突

一:問題背景.     Maven依賴使用方便,但是出現了依賴衝突後,一般如何解決吶?本文將以IDEA為開發工具介紹一下.            &

解決maven中servlet-api.jar和容器自帶的servlet-api.jar的依賴衝突

在學習maven時,給maven新增tomcat7-maven-plugin外掛後,新建了一個專案並且嘗試執行,但出現下列異常:   通過在百度的搜尋,得知這是由於servlet-api.jar和容器自帶的servlet-api.jar產生了依賴衝突。但是,在百度中沒有