Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

DI 적용 #23

Open
yujung5873 opened this issue Feb 4, 2025 · 1 comment
Open

DI 적용 #23

yujung5873 opened this issue Feb 4, 2025 · 1 comment
Assignees

Comments

@yujung5873
Copy link
Collaborator

yujung5873 commented Feb 4, 2025

Description

Hlit라이브러리를 이용해 DI 적용

참고사이트

@yujung5873 yujung5873 self-assigned this Feb 4, 2025
@yujung5873
Copy link
Collaborator Author

yujung5873 commented Feb 4, 2025

DI (Dependency Injection, 의존성 주입)란?

객체 간의 의존성을 직접 생성하지 않고, 외부에서 주입해주는 개념.

목표: 결합도를 낮추고, 코드의 재사용성과 테스트 용이성을 높이는 것.
대표적인 DI 프레임워크: Dagger, Hilt, Koin.

각 DI 프레임 워크의 장단점
Dagger
장점

  • 컴파일 타임 DI로 성능이 뛰어남
  • 안정적인 코드(의존성 오류를 빌드 시점에 잡아줌)
  • 멀티모듈 지원이 우수함

단점

  • 설정이 복잡하고 보일러 플레이트 코드가 많음

Koin
장점

  • 설정이 간단하고 코드가 직관적
  • Kotlin친화적인 DSL사용가능
  • 보일러 플레이트 코드가 적음

단점

  • 런타임 DI방식으로 앱실행 시점에서 의존성 해결 -> 성능 저하 가능
  • 컴파일 타임 체크가 없어 런타임 에러 발생 가능성 있음

Hlit
장점

  • Android 공식 지원 -> Jetpack과 완벽히 연동 가능
  • Daggerr기반으로 Dagger의 강력한 성능 유지 (컴파일 타임 DI)
  • 보일러 플레이트 코드 감소로 사용이 간편(Component 생성 자동화, Module 설정 최소화 등의 이유)
  • ViewModel,WorkManager 등과 자동 연동 가능

단점

  • Dagger기반으로 작동하기 때문에 Dagger의 개념을 이해하지 못하면 디버깅 어려움
  • 멀티 모듈 프로젝트에서 Hilt를 사용할 때 모듈 간 의존성 관리가 어려울 수 있음(@EntryPoint 를사용해야하는 경우가 많아지고, 모듈 간 의존성 관리를 잘못하면 빌드 속도가 느려질 수 있음)
  • 컴파일 DI를 사용하기 때문에 프로젝트가 커질 수록 빌드시간이 증가할 수 있음

Hilt는 Android 공식 DI 솔루션으로 Dagger의 성능을 유지하면서 설정이 간편하고 Jetpack과 완벽히 연동가능 해 Hilt로 DI 적용

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

1 participant