Dagger 2 생성 코드

원본 :https://medium.com/mindorks/dagger-2-generated-code-9def1bebc44b

왜 또 Dagger2 글인가?

당신이 무슨 생각을 하는 지 알고 있다. 왜 또 dagger2 글인가.. 맞지 않는가? 하지만 이 글의 목적은 Dagger2를 당신의 프로젝트에 어떻게 사용해야 하는 지를 보여주기 위한 것이 아니며(그런 것을 찾고 있다면여기에 좋은 예제가 있다) 대신 Dagger가 생성하는 코드를 자세히 살펴보고 Dagger가 당신의 의존성 그래프를 생성할 때 내부적으로 무엇을 하는지를 이해하기 위함이다.

사전 지식:

1.Builder Design Pattern

2.Factory Design Pattern

이 두 패턴에 익숙하지 않다면, 이 글의 나머지 부분들이 조금 당황스러울 것이다. 복습이 필요하다면 온라인에 충분한 자원들이 존재한다.

3. Dagger 2 라이브러리 숙지

조금 전에도 언급했듯이 이 글은 Dagger 2를 소개하는 것이 아니다. 당신이 Dagger 2을 사용해 본 적이 없거나 복습이 필요하다면Janishar Ali의 다음 글을 참고하라.

https://medium.com/mindorks/introduction-to-dagger-2-using-dependency-injection-in-android-part-1-223289c2a01b

예제:

코드 샘플을 위해 MindorksOpenSource’sandroid-dagger2-example의 포크를 사용 할 것이다.

https://github.com/iamBedant/android-dagger2-example

이 트리는 예제의 의존성 그래프를 묘사한다.

이 의존성을 생성하기 위해 우리는 두 모듈(ApplicationModule&Activity Module)과 그들 각자의 컴포넌트(ApplicationComponent,ActivityComponent)들이 필요하다.

ApplicationModule.java:

https://gist.githubusercontent.com/iamBedant/f3f7b03c7352bf5f0eb41cd0c242bcaf/raw/293787c929f0c10aea060db6e4f86445e6dfb21d/ApplicationModule.java

ActivityModule.java:

https://gist.githubusercontent.com/iamBedant/86370ca54525c73c5544e944cfff7462/raw/f64199f514e3411e843557a172edb6854cb99452/ActivityModule.java

ApplicationComponent.java:

https://gist.githubusercontent.com/iamBedant/15883da00b1ce9c5c414012ca6364bdb/raw/73f711dbcf1b908fe1745eebf543f191d340e5e5/ApplicationComponent.java

ActivityComponent.java:

https://gist.githubusercontent.com/iamBedant/bab8eeda94e2ef85b20f1836ae325f0b/raw/d1d5238576553d4128c5d549c1a6a46d2c32bf41/ActivityComponent.java

이제 우리는 우리 앱의 어디에라도 의존성들을 주입할 수 있다. 예를 들어 어떤 이유로 애플리케이션 클래스에서DataManager의 인스턴스를 원한다면 다음처럼 쉽게 주입할 수 있다.

DemoApplication.java

https://gist.githubusercontent.com/iamBedant/5a1a7ab7d0a3b576e2619933f47f2cee/raw/5568dd49cc13ccf907acd05bc9e0b0bbf1d2ef1b/DemoApplication.java

Activity에 동일한 것을 원한다면 다음처럼 얻을 수 있다.

https://gist.githubusercontent.com/iamBedant/15e07d7d163c4663a6349d91bcaa3782/raw/c2d43c6197db31d93178b2a62926940b5b198007/MainActivity.java

DataManager 클래스의 생성자가 어떤지 보자.

DataManager.java:

https://gist.githubusercontent.com/iamBedant/a39497fde08cd6e2be77fb74c68160ac/raw/ab73b886d5854aab3fba98f6f7a9df9541cc6f62/DataManager.java

DataManager클래스가 3개의 외부 클래스Context,DbHelper그리고SharedPrefHelper들에 의존을 가지고 있음에도 단 한 줄로 여기에 주입할 수 있다. 이는 Dagger 2가 어떻게 당신의 삶을 더 편하게 만들어 주는지를 보여준다.

지금까지는 우리 모두 알고 있는 것을 화제로 삼았다. 조금 깊이 들어가 Dagger 2의 내부에서는 무엇을 하는 지를 볼 시간이다.

생성된 코드:

--먼저 생성된 코드의 책임을 이해하기 위해 각각을 분리하여 검토할 것이다. 일단 그렇게 한 뒤, 우리의 삶을 더 편하게 만들기 위해 이 모든 클래스들이 어떻게 함께 작동하는지를 보도록 하자.

기본적으로, Dagger 2는 당신의 의존성을 위한 팩토리들의 묶음을 생성한다.

results matching ""

    No results matching ""