Android 공부/DI ( 의존성 주입 )

[Android] DI Framework (Dagger2, Koin, Hilt)

Machine_웅 2022. 4. 18. 21:20
728x90
반응형

DI...  DI ..DI..DI..DI

하다보면  Android 개발자라면 Dagger2, Koin, Hilt라는 것을 들어봤을 ( 봤을 ) 것이다.

그럼 뭘써야할까... ㅠㅠ  일딴  차이를 비교해보고 특성을 알아보려고 한다.

 

1. Dagger2

- java, Kotlin

- Dagger2 적용을 위해 환경을 세팅해야하는 과정과 원활한 적용에 필요한 러닝커브가 크다.

- 컴파일 시 애노테이션을 읽고 scope에 맞는 DI container와 주입할 class파일을 generate하여 의존성을 주입한다.

- 컴파일 시간 증가 , 문제가 있을 경우 Compile 시점에서 에러

 

2. Koin

 Kotlin DSL(Domain Specific Language, 도메인 특화 언어)로 만들어졌다.

- Kotlin 

- Dagger2에 비해 사용법이 쉽다

- DSL을 활용하여 runtime에 의존성을 주입한다.

- runtime error가 발생할 수 있고 compile시점에서 오류 확인이 어려울 수 있다.

 ( 단위테스트로 어느정도 보완이 가능하지만, 단위테스트도 결국 사람이 짜는거... )

 

3. Hilt

Dagger를 기반으로 만들어진 DI Framework로 Dagger2와 비슷한 동작방식을 가지고 있다.

 

- Hilt를 적용할 때 가장 걱정하는 부분은 안정성 보장과 현재 개발 환경과의 충돌이 될 수 있다.

- 구글 문서도 빠르게 업데이트 중이고, 낮은 러닝커브와 Dagger의 장점을 모아 구글에서 만들어지고 있는 Framework

 

 

 

 

Dagger2 공부 방법을 잘설명한 링크 

https://kotlinworld.com/111

 

[Dagger2] Dagger2 정리

Dagger2란? Dagger2란 Java/Kotlin을 위한 의존성 주입 프레임워크이다. Dagger2에 Hilt를 결합한 버전인 Dagger-Hilt가 대세가 되고 있고, 다른 DI Framework과는 달리 컴파일 타임에 연산을 처리하여 런타임의..

kotlinworld.com

 

728x90
반응형

'Android 공부 > DI ( 의존성 주입 )' 카테고리의 다른 글

Hilt ?  (0) 2022.05.16
DI ) Dagger2의 5가지 필수 개념  (0) 2022.04.26
DI ) Dagger2 란?  (0) 2022.04.25
[Android] DI ??  (0) 2022.04.18