data: Api 호출, 데이터베이스 작업 관리
domain: 앱의 핵심 비즈니스 로직, 예를 들어 위치 정보 체크 등을 수행
presentation: 사용자 인터페이스와 관련된 로직을 관리
이정도의 최소한의 기능들로 app이라는 하나의 모듈에서 data, domain, presentation 3 모듈로 분리하였다. 클린아키텍처가 적용되어가고 있다.
이제 domain에 있는 로직을 data, presentation에서 사용하도록 해야한다.(data에 있는 로직을 presentation에서 사용 하기도 할 것이다. Activity의 생명주기가 presentation에 정의되어있다.) 그러기 위해선 의존성 주입이 필요하다.
의존성 주입은 위와 같이 종속된 관계들을 수동으로 삽입해주어야한다. 한마디로 모든 클래스와 종속 항목을 수동으로 구성하고 컨테이너를 사용하여 종속 항목을 재사용 및 관리해야 한다는 것이다.
그래서 필요한 것이 의존성 주입 라이브러리들 중 Hilt를 선택할 것이다.
Dagger의 이점을 누리면서 더 간결하다.
Koin 도 있다 코틀린과의 호환성을 생각한다면 고려할 수 있는 친구다.