[DI,Android] Dagger2, Hilt 없이 의존성 주입 사용해보기
스터디 목적 DI의 원리를 이해하기 위해서 Dagger2와 Hilt 같은 의존성 라이브러리 없이 로그인 플로우를 구현하는 방식을 배운다. 의존성 라이브러리를 사용하지 않고 구현했을 경우, 차이점과 필요성을 알 수 있다. 우선 프로젝트 구조는 아래와 같다. [ Login Activity ] - > [ Login ViewModel ] - > [ UserRepository ] - > [ UserLocalDataSource ] - > [ UserRemoteDataSource ] - > [ Retrofit ] Login Activity에서 사용자가 데이터에 접근하면, Login ViewModel에 접근할 수 있다. Login Viewmodel은 userRepository를 생성해서 기능을 사용하게 되는데, use..
- [Android] Architecture/[Android] DI
- · 2023. 7. 25.
안드로이드 의존성 주입과 Hilt (2)
Hilt의 주요 Annotaion 1>HiltAndroidApp 기존의 컴포넌트 생성은 아래의 코드와 같이 onCreate()에서 컴포넌트를 인스턴스화 하였다. hiltAndroidApp 어노테이션만 추가함으로써 컴포넌트를 인스턴스화 할 수 있다. 이 때 의존성 주입은 super.onCreate()에서 이루어진다. 바이트코드 변환 때문에 onCreate에서 컴포넌트 인스턴스 생성이 가능해진다. HiltAndroidApp은 Hilt 코드 생성을 시작하고 반드시 Application 클래스에 추가해야 한다. [ByteCode Transformation] 바이트 코드 변환을 통해서 MemoApplication 클래스는 Hilt_MemoApplication을 상속받을 필요 없이, Application() 상속만..
- [Android] Architecture/[Android] DI
- · 2023. 6. 25.
안드로이드 의존성 주입과 Hilt (1)
학습 자료로 드로이드나이츠 인터넷 강의를 참고했습니다. https://www.youtube.com/@DroidKnights DroidKnights www.youtube.com 의존성 주입 ( Dependency Injection) 생성자 또는 메서드 등을 통해 외부로부터 생성된 객체를 전달받는 것 클래스간 결합도를 느슨하게 하며, 인터페이스 기반으로 설계뙤어 코드를 유연하게 한다. Stub 또는 Mock 객체를 사용하여 단위테스트를 하기가 더욱 쉬워진다. [ 의존성 주입을 사용하지 않은 경우 ] 의존성 주입이 없는 경우 아래 코드와 같이 데이터 베이스에 접근한다. 내부에서 자체적으로 데이터베이스의 객체 생성을 책임지고 있다. 아래와 같은 방식으로 인스턴스를 생성해서 저장된 메모리를 불러온다. [ 의존성 ..
- [Android] Architecture/[Android] DI
- · 2023. 6. 15.