기본 콘텐츠로 건너뛰기

글

라벨이 dagger2인 게시물 표시

[Android][Dagger2][Firebase] Android에 Dagger를 통한 Firebase Database DI 하기

본 글은 Android에서 Dagger2를 사용하여 Firebase DatabaseReference를 DI 하는 것을 설명하므로 Dagger2, Firebase, DI에 대한 설명은 생략합니다. 관련하여 구글링을 했지만 개념을 이해하기 쉽지 않았습니다. 큰 개념은 이해가 가지만 실 구현은 더더욱 와닿지가 않더군요. 우선 간단한 수준으로 DI를 성공시킨 뒤 까먹지 않기 위해 기록을 남깁니다. 우선 DI를 하는데 사용된 라이브러리 Dagger2에서 사용되는 핵심 구성 요소 들은 다음과 같이 3가지가 있다. @Module + @Provides @Inject @Component 1. @Module + @Provides - Class에 선언되는 어노테이션으로 DI에 사용될 실제 구현체들을 모듈 단위로 모아놓은 어노테이션으로 이해된다. - Module 어노테이션이 선언된 클래스에는 @Provides 어노테이션을 메서드 앞에 붙여주어 DI에 사용될 구현체를 정의할 수 있다. 2. @Inject @Module + @Provides의 구현체를 주입받을 타겟이 된다. Class, Method, Field에 사용 가능하지만 본 글에서는 Field에 사용한 예를 보인다. 3. @Component @Module + @Provides와 @Inject를 연결해주는 Bridge라고 보면 된다. 예제의 구성 요소 UsersActivity.java (Android Activity - @Inject) UserDataSource.java (Interface) UserRepository (Class - UserDataSource의 구현체) RepositoryComponent (@Component) RepositoryModule (@Module + @Provides) 1. 먼저 UserDataSource Interface를 보겠습니다.    1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 public   inte...