Skip to content
K024_박치윤 edited this page Nov 30, 2021 · 2 revisions

그물잠🐟 은 클래스 마다 필요한 의존성을 주입받기 위해서 Hilt 를 사용했습니다!

🤷‍♂️ Why DI Library?

  • Hilt 를 도입하기 전에는 클래스 내부에서 직접 의존 항목의 인스턴스를 생성해보기도 하고, 직접 DI 객체를 만들어 수동으로 의존성을 주입해보기도 했습니다.
  • 이러한 방식은 코드의 재사용이 어렵다. 리팩토링이 어렵다. 보일러플레이트 코드가 발생한다. 라는 문제점이 있었습니다.
  • Hilt 를 사용하여 다음과 같은 이점을 가질 수 있었습니다.
    • 코드 재사용 및 리팩토링이 수월합니다.
    • 보일러 플레이트 코드가 발생하지 않습니다.
    • 테스트가 용이한 구조를 만들 수 있습니다.

🤷‍♂️ Why Hilt?

DI 라이브러리로 다음과 같은 선택지가 있었습니다!

Dagger2

  • Code generate 기반
  • 컴파일 시 의존성 주입
  • 라이브러리에 대한 많은 이해를 필요로 하기 때문에 처음 도입할 때 러닝커브가 높은 편

Koin

  • Kotlin DSL 기반
  • 런타임 시 의존성 주입
  • 테스트 코드를 작성한다 하더라도 발생하는 모든 런타임 에러를 대응하는 데 제한이 있음

Hilt

  • Dagger를 기반으로 한 Dagger-Hilt
  • Dagger에 비해 낮은 러닝 커브
🗡️ DI 라이브러리를 처음 사용해보는 저희 팀은 **빠르게 학습 / 적용이 가능하고**, **컴파일 시 에러를 확인**할 수 있는 Hilt 를 사용하기로 결정했습니다.