💡 Hilt로 Retrofit 모듈을 작성할 때 여러개의 URL을 처리해야 하는 경우에 Hilt가 어떤 메서드의 Retrofit 객체를 사용해야하는지 모른다. 이를 해결하기 위해 @Qualifier를 사용하여 annotation클래스를 사용한다.
ex)
만약 car를 요청할 때 hilt는 두 바인드 메서드에서 어느 종류의 car를 리턴해야 하는지 모른다. 이를 보완하기 위해
@Qualifier를 사용.
enum class OilType{
GASOLINE,DIESEL,LPG
}
interface Car{
fun getOilType():OilType
...
}
@InstallIn(ActivityComponent::class)
@Module
abstract class CarModule{
@Binds
fun bindGasolineCar(impl:GasolineCar):Car
@Binds
fun bindDieselCar(impl:DieselCar):Car
...
}
- 아래와 같이 어노테이션 클래스를 만든다.
@Qualifier
annotation class GasolineCar
@Qualifier
annotation class DieselCar
- 모듈에서 지정한다.
@GasolineCar
@Binds
fun bindGasolineCar(impl:GasolineCar):Car
@DieselCar
@Binds
fun bindDieselCar(impl:DieselCar):Car
- 다음과 같이 사용한다.
@GasolineCar
@Inject lateinit var gasolineCar:Car
@DieselCar
@Inject lateinit var dieselCar:Car
'안드로이드' 카테고리의 다른 글
[안드로이드] 컴포즈 build-logic, convention 멀티모듈 빌드 로직 관리하기 (1) | 2025.06.18 |
---|---|
[안드로이드] 멀티모듈, 컴포즈UI, Hilt, Navigation 사용해서 간단한 게시판 프로젝트 만들기 (2) | 2025.06.12 |
[안드로이드] StateFlow 알아보기 (0) | 2022.10.19 |
[안드로이드] mvvm 패턴 (0) | 2022.10.16 |
[안드로이드] Hilt - 2 (@Binds vs @Provides) (0) | 2022.10.14 |