SlideShare a Scribd company logo
Scoped DI with
Dagger2
Daum Cafe
Mikael
발표목차
•Intro
•Dagger Overview
•Sample App
•Objects in Scopes
•Custom Scopes
•Scope을 구현하는 2가지 방법
•실행흐름
Intro
•https://github.com/frogermcs/GithubClient
•Dagger2를 application / user / activity scope으
로 나눠서 사용하는 방법
•Subcomponent를 활용
•plus(서브 컴포넌트 생성) 메소드를 통해 명시적으로
life cycle 관리
Dagger Overview
• Component, Module에 제공될 DI 객체들 정의
• 사용하는 곳에서 @Inject 어노테이션을 통해 주입받
음
• Activity, Fragment 등에서는 component에 대한 참
조를 얻어서 자기 자신을 전달하여 의존성을 주입받음
Dagger Component
• component는 아래를 정의
–DI로 제공될 객체들을 생성할 모듈
(ApplicationModule)
–Injection이 일어날 대상(BaseActivity)
–DI로 제공될 객체들(Context, RetrofitServiceFactory,
UserRepository, RxBus)
Dagger Module
• DI로 제공할 객체들(Context,
RetrofitServiceFactory, UserRepository, RxBus)을
생성하는 로직들을 갖는다
Dagger Component & Module
Dagger Client
Dagger Client
Sample App
Objects in Scopes
•application scope
–Application, AnalyticsManager, Validator, Heav
yExternalLibrary 등
•user scope
–User, RepositoriesManager(User에 의존)
•activity scope
–XXXActivity, XXXPresenter, XXXListAdapter,
LinearLayoutManager, XXXFactory 등
Custom Scopes
•@UserScope은 사용자 경험 측면에서는 아무런 차
이도 없음
•하지만 아키텍쳐 측면에서는
–User 인스턴스를 Intent의 파라미터로 전달하지 않
고도 제공
–메소드 파라미터에 user data를 필요로 하는 클래스
들은 user를 생성자 주입을 통해 전달 받을 수 있고,
앱의 런칭때 생성하지 않고, 필요한 시점에 초기화될
수 있음
Scope을 구현하는 2가지 방법
•1. @Subcomponent
•2. Components Dependencies
•차이점: 객체 그래프 공유 방식
•1. 최초 app 시작
–Application#onCreate
!AppComponent built
–Main Activity#onCreate
!SplashActivityComponent built
실행 흐름
•1. 최초 app 시작
실행 흐름
•2. username 입력 후 show repositories 버튼 클릭
실행 흐름
•activity scope component 생성
–UserComponent의 하위 컴포넌트로
RepositoriesListActivityComponent를 생성하고,
inject를 호출하여 DI
실행 흐름
•3. back button click해서 usename 입력 화면으로
돌아올 때
실행 흐름
•4. repository clicked
실행 흐름

More Related Content

PDF
Python codelab2
PDF
ScriptRunner 꼼지락꼼지락
PPT
안드로이드 개발하기 2nd week
PPTX
Dagger 2
PPTX
Dagger 2.0 을 활용한 의존성 주입
PPTX
Angular 2 rc5 조사
PDF
Dagger with multi modules
PDF
Polymer따라잡기
Python codelab2
ScriptRunner 꼼지락꼼지락
안드로이드 개발하기 2nd week
Dagger 2
Dagger 2.0 을 활용한 의존성 주입
Angular 2 rc5 조사
Dagger with multi modules
Polymer따라잡기

Similar to Scoped di with dagger2 (20)

PPTX
2일차 20140402
PDF
Kinesis / Lambda / EMR / Redshift 를 이용한 Big Data 분석 - 이상현 (빙글)
PPTX
Data-binding AngularJS
PDF
okspring3x
PPTX
Spring di chapter2
PPTX
Source To URL Without Dockerfile
PDF
[21]변화의 시대 : 안드로이드 앱 어떻게 개발할 것인가?
PPTX
Angular2 NgModule
PPTX
Jira manual
PPTX
공간SQL을 이용한 공간자료분석 기초실습
PPTX
Angular2를 활용한 컴포넌트 중심의 개발
PDF
Android DI With Hilt
PPTX
안드로이드를 위한 Gradle 맛들이기
PDF
[2022]Flutter_IO_Extended_Korea_멀티모듈을활용한플러터클린아키텍처_...
PPTX
황규영 포트폴리오
 
PDF
LucideWorks Banana 소개
PDF
Spring Framework - Inversion of Control Container
PDF
Cloud for Kubernetes : Session1
PDF
Modularization with Dynamic Feature Module
PDF
Python codelab1
2일차 20140402
Kinesis / Lambda / EMR / Redshift 를 이용한 Big Data 분석 - 이상현 (빙글)
Data-binding AngularJS
okspring3x
Spring di chapter2
Source To URL Without Dockerfile
[21]변화의 시대 : 안드로이드 앱 어떻게 개발할 것인가?
Angular2 NgModule
Jira manual
공간SQL을 이용한 공간자료분석 기초실습
Angular2를 활용한 컴포넌트 중심의 개발
Android DI With Hilt
안드로이드를 위한 Gradle 맛들이기
[2022]Flutter_IO_Extended_Korea_멀티모듈을활용한플러터클린아키텍처_...
황규영 포트폴리오
 
LucideWorks Banana 소개
Spring Framework - Inversion of Control Container
Cloud for Kubernetes : Session1
Modularization with Dynamic Feature Module
Python codelab1
Ad

More from Myeongseok Baek (6)

PDF
"행복한 백발의 개발자"라는 제목으로 2024-03-06 어느 IT 업체에서 직책자로 승진한 분들을 대상으로 한...
PDF
INFCON2023-지속 가능한 소프트웨어 개발을 위한 경험과 통찰
PDF
2022 01-okky-코드리뷰
PDF
2019 11-code review
PDF
2018 01-code review
PDF
Ddc2011 효과적으로레거시코드다루기
"행복한 백발의 개발자"라는 제목으로 2024-03-06 어느 IT 업체에서 직책자로 승진한 분들을 대상으로 한...
INFCON2023-지속 가능한 소프트웨어 개발을 위한 경험과 통찰
2022 01-okky-코드리뷰
2019 11-code review
2018 01-code review
Ddc2011 효과적으로레거시코드다루기
Ad

Scoped di with dagger2