본문 바로가기

Android/Hilt4

[Android/Hilt] @Provides vs @Binds: Hilt에서 객체를 주입하는 두 가지 방식 이전에 사이드 프로젝트를 진행하면서 의존성 주입을 할 때 어떤 곳에는 @Provides를 사용하고, 어떤 곳에는 @Binds를 사용하는 것을 보고 그 차이가 궁금했습니다. 당시에는 명확하게 이해하지 못한 채 사용했었지만, 학습을 진행하며 그 차이를 조금씩 이해하게 되었습니다. 이에 대한 내용을 정리하여 보다 명확하게 개념을 정리하고자 합니다.@Provides와 @Binds의 핵심 차이점구분사용 방식특징@Provides메서드 내에서 인스턴스를 반환인터페이스뿐만 아니라 일반 클래스 객체도 생성 가능@Binds구현체를 바인딩하는 방식인터페이스와 구현체 간의 관계를 선언적으로 설정@Provides를 사용하는 경우@Provides는 Hilt가 직접 @Inject를 붙여 생성할 수 없는 경우 사용해야 합니다.사용하.. 2025. 3. 7.
[Android/Hilt] @Qualifier와 @Named 이해하기: 같은 타입의 여러 의존성을 구별하여 주입 Hilt를 사용하다 보면 같은 타입의 여러 의존성을 주입해야 하는 상황이 발생할 수 있습니다. 이때, 어떤 객체를 주입해야 할지 Hilt가 알 수 있도록 구분하는 방법이 @Qualifier와 @Named입니다. 이번 글에서는 이 두 개념을 정리해보겠습니다.같은 타입의 의존성 주입 문제Hilt는 기본적으로 반환 타입을 기준으로 의존성을 주입합니다. 그러나 같은 타입의 여러 객체를 주입해야 하는 경우가 있을 수 있습니다.예를 들어, 두 개의 String 값을 의존성으로 제공하려고 할 때 문제가 발생할 수 있습니다.@Module@InstallIn(SingletonComponent::class)object StringModule { @Provides fun provideHelloString().. 2025. 3. 7.
[Android/Hilt] @Inject와 @Module, @Provides 이해하기 Hilt는 안드로이드에서 의존성 주입(DI, Dependency Injection)을 쉽게 구현할 수 있도록 도와주는 라이브러리입니다. Hilt를 사용하면 의존성 관리를 더욱 효율적으로 할 수 있으며, 코드가 간결해집니다. 특히 @Inject와 @Module, @Provides는 Hilt에서 가장 중요한 개념 중 하나입니다. 이번 글에서는 이 두 개념을 정리해보겠습니다.@Inject: 직접 만든 클래스의 의존성 주입@Inject는 직접 만든 클래스의 의존성을 Hilt가 자동으로 관리할 수 있도록 도와줍니다.@Inject constructor를 사용한 생성자 주입class ExampleRepository @Inject constructor() { fun getData(): String = "Hello.. 2025. 3. 7.
[Android] Hilt를 활용한 Android 의존성 주입: @HiltAndroidApp으로 애플리케이션 컨테이너 설정하기 Hilt와 관련된 설명에서 "컨테이너"라는 용어는 종속 항목(의존성)을 관리하고 저장하는 구조를 의미합니다. 쉽게 말해, Hilt를 사용하는 Android 애플리케이션에서 컨테이너는 앱의 다양한 부분(예: 액티비티, 프래그먼트, 서비스 등)이 필요로 하는 객체들을 생성하고, 저장하며, 필요한 곳에 제공하는 역할을 합니다.Hilt 컨테이너의 역할객체 생성: 필요한 객체를 생성하는 공장 같은 역할을 합니다.객체 저장: 생성된 객체를 저장하여, 같은 객체를 여러 곳에서 재사용할 수 있도록 합니다.객체 제공: 저장된 객체를 필요한 곳에 자동으로 제공합니다.@HiltAndroidApp 주석의 역할@HiltAndroidApp은 애플리케이션의 시작점에 붙는 주석으로, Hilt를 사용하기 위한 초기 설정을 의미합니다... 2024. 5. 21.
반응형