4. Dagger Overview
• Component, Module에 제공될 DI 객체들 정의
• 사용하는 곳에서 @Inject 어노테이션을 통해 주입받
음
• Activity, Fragment 등에서는 component에 대한 참
조를 얻어서 자기 자신을 전달하여 의존성을 주입받음
11. Objects in Scopes
•application scope
–Application, AnalyticsManager, Validator, Heav
yExternalLibrary 등
•user scope
–User, RepositoriesManager(User에 의존)
•activity scope
–XXXActivity, XXXPresenter, XXXListAdapter,
LinearLayoutManager, XXXFactory 등
12. Custom Scopes
•@UserScope은 사용자 경험 측면에서는 아무런 차
이도 없음
•하지만 아키텍쳐 측면에서는
–User 인스턴스를 Intent의 파라미터로 전달하지 않
고도 제공
–메소드 파라미터에 user data를 필요로 하는 클래스
들은 user를 생성자 주입을 통해 전달 받을 수 있고,
앱의 런칭때 생성하지 않고, 필요한 시점에 초기화될
수 있음
13. Scope을 구현하는 2가지 방법
•1. @Subcomponent
•2. Components Dependencies
•차이점: 객체 그래프 공유 방식
14. •1. 최초 app 시작
–Application#onCreate
!AppComponent built
–Main Activity#onCreate
!SplashActivityComponent built
실행 흐름