Android, iOS

내가 Dagger2를 공부한 방법

미스터머글 2020. 9. 22. 16:11
728x90
반응형
TL;DR(이라고 쓰고 요약이라고 읽는다.)
이해가 안가더라도 직접 적용해보고 아래 링크로 걸어둔 자료같은 것을 많이 읽어봐야 한다.

 

무려 1달 넘게... DI, 그리고 Dagger를 공부하고 있다. 물론 아직도 이게 정확히 무엇이다라고는 말하지 못하겠다.

제대로 사용하라고 하면 솔직히 자신은 없으나 어떻게 꾸역꾸역 머리에 집어 넣는 중이다.

겨우 이해한 것도 있고 아닌 것도 있는데 이렇게 고생하는 부들이 있지 않을까해서

내가 Dagger를 공부하다가 알게된 좋은 것들을 공유해볼까 한다.

 

1. 책으로 공부했다.

 

안드로이드 개발자들에게 유명한 "찰스". 그 닉네임을 사용하시는 옥수환님께서 올해 발간한 책이다.

Dagger뿐만 아니라 Jetpack 등을 설명하고 있다.

 

DI 개념도 모르고 바로 Dagger를 학습하기란 쉽지가 않다.

그래서 이 책에 나온 자료를 가지고 실습을 하면서 공부를 했다.

이해가 안가더라도 일단 해보면서 진행을 했고 해당 서적 가장 마지막에 나와 있는 프로젝트로 다듬었다.

프로젝트를 한번만 수행해서는 이해가되지 않아서 동일한 코드를 한 번 더 따라하면서 모르는 부분을 체크해보았다.

 

 

아키텍처를 알아야 앱 개발이 보인다

설계부터 유지 보수까지 튼튼하고 유연한안드로이드 애플리케이션 만들기안드로이드 앱 시장이 성숙하고, 서비스가 고도화됨에 따라 앱 설계에 대한 중요성이 강조되고 있다. 안드로이드 앱 ��

book.naver.com

아래는 실습코드이다.

 

bjpublic/iseeapp

Contribute to bjpublic/iseeapp development by creating an account on GitHub.

github.com

 

 

2. 참고해서 좋았던 블로그 글

아래는 Dagger의 구조를 도식화해 놓았다. 한눈에 보기 매우 좋다.

초반에 이해할 때 큰 도움이 되었다.

https://brunch.co.kr/@oemilk/73

 

Dagger 2 #04

Dagger 2 & Android | Dagger 2 & Android 의존성 주입(DI)을 이용하여 안드로이드 앱을 만드는 데 가장 큰 어려움 중 하나는 Activity나 Fragment 같은 많은 안드로이드 프레임워크 클래스들이 OS에 의해 인스턴��

brunch.co.kr

 

 

Pluu님이 번역하신 글. Dagger의 전반적인 부분을 다루셨다.

공부하다가 중간에 이해가 안되는 부분을 여기서 찾아보았다.

http://pluu.github.io/blog/android/droidkaigi/2020/01/27/droidkaigi-multimodule-with-dagger/

 

Pluu Dev - [번역] DroidKaigi 2019 ~ 멀티 모듈 프로젝트에서의 Dagger를 사용해 Dependency Injection

GPU Overdraw 1-draw 줄이기 Posted on 18 Aug 2020 CustomView의 레이아웃 1-Depth 줄이기 Posted on 16 Aug 2020 Android CustomView Style의 숨은 그림자 Posted on 09 Aug 2020 Android Global View Style에 대한 정리 Posted on 02 Aug 2020

pluu.github.io

 

 

Dagger의 개념정리라고 할까. 전체의 절반 정도는 공부 초반에 읽어보길 권한다.

https://medium.com/@jason_kim/tasting-dagger-2-on-android-%EB%B2%88%EC%97%AD-632e727a7998

 

Tasting Dagger 2 on Android (번역)

Fernando Cejas 가 작성한 ‘Tasting Dagger 2 on Android’ 를 원작자의 동의를 받아 번역한 글입니다.

medium.com

 

 

실무에서 어떻게 쓰는지 궁금하면 아래 "배달의 민족 기술블로그"를 참고하자.

https://woowabros.github.io/experience/2019/07/31/android-dagger.html

 

Dagger 적용기 - 우아한형제들 기술 블로그

Dagger 적용기

woowabros.github.io

 

 

미리 경고하는데 아래는 영어 원문이다. 그리고 조금 난해하다. 나 역시도 번역기 돌려서 보았다.

적어도 Dagger를 한번 정도 실습하고 나서 아래를 읽자.

내 경우에는 Dagger가 자동으로 Generate, 그러니깐 자동 생성하는 class가 어디서 만들어지는지 궁금했는데

아래 자료를 통해 겨우 티끌만큼 이해했다.

(_MembersInjector로 끝나거나 _Factory로 끝나는 클래스들)

Part1, 2만 링크를 걸었지만 3도 있다. 다만 내가 읽지 않았을 뿐. (아~ 내 눈~~~)

https://proandroiddev.com/deep-dive-into-dagger-generated-code-part-1-58f3cb9563de

 

Deep dive into Dagger generated code (part 1)

Convert generated code from Java to Kotlin to understand how @Inject constructors and @Provides works

proandroiddev.com

https://proandroiddev.com/deep-dive-into-dagger-generated-code-part-2-13de4781b49d

 

Deep dive into Dagger generated code (part 2)

Convert generated code from Java to Kotlin to understand how different features work

proandroiddev.com

 

 

3. 만든 당사자에게 설명을 들어보자.

 

섬네일만 봐도 익숙한 제이크 왓슨 형이다. (물론 호형호제를 맺은 적은 없다.)

친구가 이해가 되지 않을때 한번 보라고 추천해줬다.

영어로 되어 있어서 자막에 번역을 돌렸는데 좀 엉망이다. 살짝 멍때리며 보면 전체 그림은 볼 수 있을 듯.

https://www.youtube.com/watch?v=plK0zyRLIP8

 

 

다시 얘기하지만 위 내용을 전부 수행했지만 아직 프로젝트에 적용할 수준이 되지 못한다.

이해도가 낮아서일 수 있지만 그래도 이정도 노력을 했다는 것을 티내고 싶었다. (누구한테?)

 

Dagger 학습의 목적은 Hilt에 있었다. 이제 코틀린 베이스로 Hilt를 공부해볼까 한다.

왠지 Hilt를 공부하려면 Dagger를 알아야할 것 같아서 시작했는데 시간이 이렇게 오래 걸렸다.

수고한 의미로 스스로에게 궁디팡팡해주며 포스팅을 끝낸다. (ㅍㅍ)

728x90
반응형