본문
160818(목) - Dagger2
Dagger2
Dagger2
- http://drcarter.tistory.com/169
- http://www.slideshare.net/ssuser70b5b8/android-and-dagger2
- https://medium.com/@jason_kim/tasting-dagger-2-on-android-%EB%B2%88%EC%97%AD-632e727a7998#.r6ybs1coo
@Inject
의존성 주입을 통해서 해당 어노테이션이 달린 클래스나 필드에게 값을 주입해 달라고Dagger에게 요청.
Dagger는 Annotation이 달린 클래스의 인스턴스를 생성하고 그것들의 의존성을 만족.
@Module
의존성을 제공하는 method들을 가진 클래스
의존성을 제공하는 클래스를 정의하고 @Module Annotation을 달아주게 되면, Dagger는 class instance를 만들 때 의존성을 만족시키기 위한 정보를 찾을 수 있음.
@Provider
Module 안에서 해당 어노테이션이 달린 method를 정의
@Component
@Inject와 @Module의 다리 역할. 의존성을 주입한다.
컴포넌트는 미리 정의한 모든 타입의 instance를 건네준다.
Interface에만 달아야 하며, 컴포넌트를 구성하는 모든 @Module이 달린 클래스 목록을 적어야 한다.(하나라도 없으면 컴파일 오류)
Application의 수명이 == component의 수명
@Scope
객체 범위의 단위를 정의 가능
@Qualifier
클래스의 유형이 종속성을 식별하기 불충분할 때 사용
Context를 주입할 때, 이 식별자 Annotation을 이용해서 Dagger가 어떤 타입을 제공할지 정해준다.
ex)
@ForApplication
@ForActivity
@Singleton
Application 하나당 하나의 인스턴스로 제약을 건다.
@PerActivity
객체의 수명이 액티비티의 수명을 따를 경우 사용하는 사용자 정의 스코프 어노테이션
- @Retention – indicates how long annotations with the annotated type are to be retained. It takes RetentionPolicy argument whose Possible values are SOURCE, CLASS and RUNTIME
댓글