일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
- 프래그먼트
- 막내의막무가내 알고리즘
- 안드로이드
- 막내의막무가내 코틀린 안드로이드
- 막내의막무가내 SQL
- 막내의막무가내 플러터
- 막내의막무가내 코볼 COBOL
- 막내의 막무가내
- 막내의막무가내 안드로이드
- 주택가 잠실새내
- 막내의막무가내 안드로이드 코틀린
- 막내의막무가내
- 막내의막무가내 코틀린
- 막내의막무가내 일상
- 주엽역 생활맥주
- 막내의막무가내 목표 및 회고
- 부스트코스에이스
- 막내의막무가내 rxjava
- 막내의 막무가내 알고리즘
- Fragment
- 부스트코스
- flutter network call
- 막내의막무가내 플러터 flutter
- 2022년 6월 일상
- 막내의막무가내 프로그래밍
- 막무가내
- 안드로이드 sunflower
- 안드로이드 Sunflower 스터디
- 프로그래머스 알고리즘
- 막내의막무가내 안드로이드 에러 해결
- Today
- Total
막내의 막무가내 프로그래밍 & 일상
[안드로이드] DI 대거(Dagger2) 공부자료 및 적용해보기 (Koin -> Dagger) 본문
[안드로이드] DI 대거(Dagger2) 공부자료 및 적용해보기 (Koin -> Dagger)
막무가내막내 2020. 7. 19. 19:10
[2021-04-14 업데이트]
안녕하세요 ㅎㅎ 요즘 블로그 포스팅할 시간이 없어 못하고있네요 ㅠㅠ
저도 현재 사용해야할 기술 중 하나이고 처음 공부 중이기 떄문에 DI 와 Dagger2 에 대한 개념은 추후에 더 학습 후 정리하도록 하겠습니다.
현재 하고 있는 프로젝트에 적용하기 전에 예전에 만든 영화검색앱 샘플 프로젝트에 간단하게 적용해봤습니다. 다른 앱은 싱글 액티비티(SPA) 구조여서 서브컴포넌트가 하나로 해놨지만 이 영화 앱과 DI 그래프 구조가 크게 달라질 것 같진 않습니다.
일단 참고한 사이트 나열 합니다.
1. 코드랩
역시 처음 실습은 코드랩이 짱이지..
https://codelabs.developers.google.com/codelabs/android-dagger/#12
2.. 안드로이드 공식문서
한번은 꼭 읽어야하는 필수코스.
https://developer.android.com/training/dependency-injection/dagger-android
3. 블로그
먼저 밑에분의 블로그는 뷰모델 구현에 큰 도움이 되었습니다. 코드도 있어서 보고 하기 좋더라고요. 그래프도 그려놓셔서 공식문서의 그래프와 비교하면서 이해하기도 더 좋았던 것 같습니다.
(1) https://github.com/spotlight21c/DaggerViewModel
https://trend21c.tistory.com/2111
(2)https://android.jlelse.eu/7-steps-to-implement-dagger-2-in-android-dabc16715a3a
4. 커니의 코틀린 샘플코드
https://github.com/kunny/kunny-kotlin-book/tree/dagger-step-2
제가 적용한 프로젝트입니다.
기존 Koin 을 적용한 프로젝트에서 Dagger2 로 변경작업을 해봤습니다. (RxJava2 적용 전의 Koin 프로젝트입니다. )
[기존 Koin 프로젝트 ]
[Dagger 로 변경작업한 프로젝트]
그래프는 다음과 같이 적용하였습니다.
[참고]
3개의 액티비티로 이루어진 간단한 토이 프로젝트 이므로 이런식으로 적용하였고 실제 적용할 프로젝트에서는 싱글액티비티 구조이므로 하나의 서브컴포넌트에 액티비티 하나와 여러개의 프래그먼트를 inject 시키는 구조로 만들었습니다.
그리고 서브컴포넌트에 @ActivityScope 를 적용시키고 기타 다른 DataModule 등에는 상황에 따라 @Singeton 과 @Reusable 스코프를 주는식으로 DI 그래프 구조를 만들었습니다.
둘의 차이점은 다음에서 정리해놨습니다.
youngest-programming.tistory.com/356
댓글과 공감은 큰 힘이 됩니다. 감사합니다!!!