본문 바로가기
Category/Android

[Android] Dagger/Hilt 의존성 주입 충돌 Qualifier로 해결하기

by Corinee 2025. 10. 8.
728x90
반응형

Dagger/Hilt는 타입을 보고 객체를 주입한다. 만약 프로젝트 내에 OkHttpClient 타입의 객체를 생성하는 provideOkHttp() 함수가 여러 개 존재하거나, 다른 목적으로 사용되는 OkHttpClient가 있다면, Dagger는 어떤 객체를 주입해야 할지 알 수 없다. 예를 들어, 앱에서 일반적인 API 통신을 위한 OkHttpClient와, Google Vision API처럼 특별한 설정을 가진 OkHttpClient가 모두 필요할 수 있다. 이런 경우 @Qualifier를 붙여 새로운 어노테이션(@CloudVisionOkHttp, @CloudVisionRetrofit)을 정의하면, Dagger는 이들을 고유한 식별자로 인식한다.

 

선언 예시:

import javax.inject.Qualifier

@Qualifier
annotation class CloudVisionOkHttp

 

제공(Provides):

@Provides
@Singleton
@CloudVisionOkHttp // 이 OkHttpClient는 CloudVisionOkHttp로 식별된다.
fun provideOkHttp(): OkHttpClient { ... }

 

주입(Inject):

@Provides
@Singleton
@CloudVisionRetrofit
fun provideRetrofit(
    @CloudVisionOkHttp okHttpClient: OkHttpClient, // CloudVisionOkHttp 꼬리표가 붙은 OkHttpClient를 주입
): Retrofit { ... }

 

이를 통해 프로젝트 내 다른 API 통신에 사용되는 OkHttpClient나 Retrofit 인스턴스와 혼동 없이 특정 목적의 인스턴스를 정확하게 주입받을 수 있다.

'Category > Android' 카테고리의 다른 글

[Android] 클린 아키텍처와 앱 아키텍처는 다르다  (0) 2025.09.26
[Android] Circuit  (0) 2025.09.25