본문 바로가기

Android/Hilt6

[Android] Hilt로 런타임 의존성 주입하기 (@AssistedInject) 1. Assisted Injection안드로이드 프로젝트에서 Dagger-Hilt 종속성 주입을 사용하는 경우 일반적으로 클래스에 종속성 객체를 주입할 때 지정된 매개변수를 자동으로 전달하여 이를 구성한다. 그러나 런타임 중에 일부 매개변수를 수동으로 제공하여 객체를 구성해야 하는 경우가 발생할 수 있다. Dagger-Hilt에서는 Assisted Injection 기능을 통해 이 방법을 제시하고 있다. 2. 예제를 통한 Assisted Injection 사용 방법 이해한 사용자의 플레이리스트를 화면을 위한 UserPlayListFragment에 삽입될 UserPlayListViewModel이 있다고 예를 들어 설명해보자. 이 Fragment가 화면에 표시될 때 유저의 플레이리스트 목록을 가져와 UI에 .. 2025. 2. 24.
[Android] Hilt 딥다이브 Hilt는 프로젝트에서 의존성 주입을 실행하는 상용구를 줄이는 Android용 의존성 주입 라이브러리입니다.Hilt를 들어가기 전 의존성 주입(DI)를 사용하는 이유와 힐트의 기본형인 Dagger에 대해 알아보겠습니다. 의존성 주입이란?특정 객체의 인스턴스가 필요한 경우 이를 직접 생성하지 않고, 외부에서 생성된 객체를 전달하는 기법입니다.각 객체는 다른 객체의 생성에는 관여하지 않고 객체를 필요로 하는 부분과 독립된 별도의 모듈이 객체의 생성과 주입을 전달합니다. 예를들어서 Engine을 사용하는 Car 클래스가 있을경우 Car 클래스는 Engine 클래스에 의존하고 있습니다. 즉 Engine 클래스의 생성자가 변경되거나 파생 클래스가 생긴다면 Car 클래스 또한 수정해야 합니다. 그림으로 본다면 Ca.. 2025. 2. 22.
[Android] Hilt와 Koin의 비교 Hilt와 Koin의 비교Dagger2의 경우 적용을 위해 환경을 세팅하는 과정이나 학습에 있어서 러닝커브가 크다. 이로 인해 Dagger2 보다 러닝 커브는 낮지만 Dagger를 기반으로 만들어진 Hilt를 많이 사용하고 있다. 또한 안드로이드 개발시 Kotlin 만을 사용한 프로젝트들이 많아지고 있어 Koin 또한 많이 사용하고 있다. 그래서! Hilt와 Koin 중 어떤 것을 프로젝트에 사용하는 것이 더 좋을지 이 둘의 장단점과 차이에 대해 비교해보자. 먼저, 각각의 장단점에 대해 알아보자. Koin장점Dagger2나 Hilt 에 비해 러닝커브가 낮다.Koin의 경우 Kotlin DSL로 만들어져 Kotlin 개발 환경에 도입이 쉽다.어노테이션을 사용하지 않아 컴파일 시간이 단축됨. → 어노테이션 .. 2024. 11. 11.
[Android] Hilt의 Componet와 Scope Component Component는 의존성 객체를 생성하고, 의존성 주입을 관리하는 컨테이너입니다. 즉, 생명주기(Scope)에 맞춰 의존성을 관리하고 제공 하는 역할을 합니다.컴포넌트는 보통 @SingletonComponent, @ActivityComponent, @FragmentComponent와 같이 특정 라이프사이클에 맞는 범위에 따라 정의되며,Hilt Component는 표준 Android 구성요소, Activity, Fragment, View, ViewModel, Service에서 사용할 수 있는 Component를 제공하고 있습니다.자동으로 생명주기 및 계층구조와 같은 세부적인 설정을 자동으로 구현합니다.  컴포넌트는 위와 같은 계층 구조를 가집니다. 이러한 계층구조에서 화살표는 하위 컴포.. 2024. 11. 11.
[Android] 프로젝트에 의존성 주입(DI) 적용해보기 - Hilt + Retrofit 1. 의존성 주입build.gradle(Project)plugins { ... ... id 'com.google.dagger.hilt.android' version '2.41' apply false} build.gradle(Module)plugins { ... id 'dagger.hilt.android.plugin'}android { ... ... kapt { correctErrorTypes true }}dependencies { ... ... // Hilt implementation 'com.google.dagger:hilt-android:2.41' kapt 'com.google.dagger:hilt-comp.. 2023. 6. 27.
[Android] Dagger Hilt로 안드로이드 의존성 주입하기 Dependency Injection의존성 주입(Dependency Injection)은 여러 컴포넌트간의 의존성이 강한 안드로이드에서 클래스 간 의존성을 낮춰준다.객체 생성 시 클래스 간 의존성이 생기게 되는데, 객체의 생성을 클래스 내부에서 하는게 아니라 클래스 외부에서 객체를 생성하여 주입시켜주는 디자인 패턴을 말한다.즉, 아래와 같이 정리할 수 있다. 의존성 주입은 클래스 외부에서 객체를 생성하여 주입하는 것!   A가 B를 의존한다는 표현은 어떤 의미일까? 추상적인 표현이지만, 토비의 스프링에서는 다음과 같이 정의한다.의존대상 B가 변하면, 그것이 A에 영향을 미친다. 즉, B의 기능이 추가 또는 변경되거나 형식이 바뀌면 그 영향이 A에 미친다.예를 들면, Car라는 클래스는 Engine이라는 .. 2023. 6. 25.