**의존성 주입(DI)**은 객체가 의존성을 직접 만드는 대신 외부에서 받는 패턴입니다 — 테스트 가능성, 유지보수성, 유연성을 향상합니다. Android에서는 (Dagger 기반의) Hilt가 권장되는 DI 프레임워크입니다.
DI란 무엇이며 왜 쓰는가
DI 없이: 클래스가 자신의 의존성을 직접 생성 (강하게 결합, 테스트/변경 어려움):
class UserRepo { val api = ApiService() } // 자신의 의존성 생성 — 경직됨
DI와 함께: 의존성이 외부에서 제공됨 (주입됨):
class UserRepo(val api: ApiService) // 받음 → 유연, 테스트 가능
→ 이점: 테스트 가능성 (테스트에서 mock/fake 주입), 디커플링, 구현 교체 용이,
중앙화된 의존성 관리, 적은 보일러플레이트 (프레임워크와 함께).
Hilt — 권장 Android DI 프레임워크
: ()
: () {
repository: UserRepository
}
AppModule {
: ApiService = Retrofit.Builder()...create()
}
