Hilt란?
Hilt는 프로젝트에서 종속성 주입을 보다 간편하게 할 수 있도록 도와주는 Android용 종속성 주입 라이브러리다.
수동 종속성 주입을 수행하려면 모든 클래스와 해당 종속성을 직접 구성하고 컨테이너를 사용하여 종속성을 재사용하고 관리해야 한다. Hilt는 프로젝트의 모든 Android 클래스에 대한 컨테이너를 제공하고 수명 주기를 자동으로 관리함으로써 애플리케이션에서 DI를 사용하는 표준 방법을 제공한다.
Hilt는 Dagger가 제공하는 컴파일 시간 정확성, 런타임 성능, 확장성 및 Dagger 라이브러리를 기반으로 구축되었다.
주요 기능
- 컴파일 타임 의존성 주입 : Hilt는 앱의 컴파일 타임에 의존성을 주입하여 앱의 성능을 향상시킨다. 이를 통해 앱의 크기를 줄이고 앱의 로딩 속도를 개선할 수 있음
- 런타임 의존성 주입 : 앱의 런타임에 의존성을 주입하여 앱의 유지보수성을 높인다. 이를 통해 앱의 모듈화와 확장성을 높일 수 있음
- 코드 간결성 : 코드를 간결하게 유지할 수 있도록 도와주고 코드의 가독성과 유지보수성을 높일 수 있음
- Kotlin 지원 : Kotlin을 지원함
DI (Dependency Injection), 의존성 주입이란?
생성자 또는 메서드 등을 통해 외부로부터 생성된 객체를 전달받는 행위를 의미한다.
자세한 내용은 이전에 정리한 포스팅 참고😀
[안드로이드] - [Android] 의존성 주입(Dependency Injection)
[Android] 의존성 주입(Dependency Injection)
서론 요즘 Android 개발자에게 요구하는 기본 stack 중 하나인 의존성 주입에 대해 정리해보려 한다. 의존성 주입에 Dagger, Hilt, Koin 같은 다양한 라이브러리를 활용하는 것으로 알고 있는데, 라이브
ystech.tistory.com
어노테이션
Hilt에서 자주 사용되는 어노테이션에 대해 간단하게 정리해 보자.
- @HiltAndroidApp : 앱의 진입점을 지정하는 데 사용됨, Hilt가 앱의 모든 클래스를 초기화할 수 있음(Hilt를 사용하는 모든 앱은 Application 클래스를 포함해야 함)
- @AndroidEntryPoint : 다른 Android class에서 멤버 주입을 사용 가능으로 설정할 수 있음(Activity, Fragment, View, Service, BroadcastRecevier)
- @Inject : 클래스의 생성자나 멤버 변수를 주입할 수 있음
- @Module : 클래스의 생성자나 멤버 변수를 주입할 때 사용할 모듈을 지정할 수 있음
- @Provides : 클래스가 외부 라이브러리를 사용하는 경우와 같이 개발자가 생성자를 삽입할 수 없을 때 위 어노테이션을 사용하여 의존성 생성
- @HiltViewModel : Hilt에게 ViewModel의 인스턴스를 제공하는 방법을 알려줌
- @InstallIn : Hilt를 사용할 때 모든 Dagger 모듈에 필요하지만, 선택적으로 비활성화하는 경우(보통 모듈 클래스에 많이 붙음) 사용
- @Binds : constructor를 가질 수 없는 인터페이스에 대한 종속성 삽입의 경우 사용
- @EntryPoint : Hilt에서 지원하지 않는 클래스에 종속 항목을 삽입하기 위해 사용
마치며
Android에서 빠질 수 없는 라이브러리인 Hilt에 대해 정리해 보았다.
사실 현재 Hilt를 사용하면서 코드가 정말 간결해진다고 느끼긴 했으나, 아직 어노테이션 사용이 익숙하지 않은 것 같다.
멀티 모듈 및 클린 아키텍처 등을 활용한 프로젝트에 Hilt를 자유롭게 사용해 보기 위해 꾸준히 공부할 계획이다🤗
위 내용은 다음 포스팅에 예제를 통해 부족한 내용을 추가해보려 한다.
Reference
Hilt 및 Dagger 주석 요약본 | Android 개발자 | Android Developers
Hilt 및 Dagger 주석 요약본 컬렉션을 사용해 정리하기 내 환경설정을 기준으로 콘텐츠를 저장하고 분류하세요. 이 요약본을 사용하면 다양한 Hilt 및 Dagger 주석의 역할 및 주석 사용 방법을 빠르게
developer.android.com
Benefits of using Hilt
Why use Hilt? Reduced boilerplate Decoupled build dependencies Simplified configuration Improved testing Standardized components Reduced boilerplate The goal of Hilt is to enable users to focus on the Dagger binding definitions and usages without needing t
dagger.dev