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 |