Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | ||||||
2 | 3 | 4 | 5 | 6 | 7 | 8 |
9 | 10 | 11 | 12 | 13 | 14 | 15 |
16 | 17 | 18 | 19 | 20 | 21 | 22 |
23 | 24 | 25 | 26 | 27 | 28 |
Tags
- dart
- android push
- Django REST
- C++
- Flutter TextField
- Kotlin
- android architecture component
- C
- Django REST framework
- Rxjava2
- livedata
- UWP
- Android P
- Python
- kodility
- FLUTTER
- Django REST Android
- 안드로이드
- 알고리즘
- RxJava
- 코틀린
- C/C++
- flutter firestore
- mfc
- RxAndroid
- 안드로이드 구글맵
- 프로그래머스
- Java
- Android
- NDK
Archives
- Today
- Total
개발하는 두더지
[Android] DI, Dagger2 란? 본문
DI란?
Dependency Injection 의존성 주입
구성요소간의 의존 관계가 소스코드 내부가 아닌 외부 설정 파일등을 통해 정의되게하는 디자인 패턴중 하나이다.
예를들면, 카페에서 커피를 만드는데 커피 머신이 어떤 부품으로 구성되어있는지 바리스타는 알필요가 없다는 개념으로 보면 될 것 같다.
이렇게 분리시켜 놓으면 객체의 생성과 사용을 분리시킬 수 있고, 재사용이 유연해진다.
Dagger란?
DI를 도와주는 Framework으로 의존성 주입 관계를 annotation을 이용해 표현한다.
Dagger1은 Square에서 처음 만들었고 Dagger2는 Google이 관리
@Module + @Provides => 의존성 제공
@Inject => 의존성 요청
@Component => Module과 Inject 사이의 브릿지 역할
@Qualifier 은 동일한 유형이지만 다른 인스턴스를 가진 객체를 구별하는데 사용된다.
@Qualifer
public @interface ActivityContext {
}
@Qualifer
public @interface ApplicationContext {
}
@Scope 는 종속성 개체가 지속되는 범위를 지정하는 데 사용된다.
Dagger2 적용 방법
https://github.com/google/dagger
build.gradle에 아래 내용 추가
//Dagger
compile 'com.google.dagger:dagger:2.0'
annotationProcessor 'com.google.dagger:dagger-compiler:2.0'
빌드 시 cannot find symbol class Generated 발생하면?
https://stackoverflow.com/a/31856869
build.gradle 에 아래 내용 추가
provided 'javax.annotation:jsr250-api:1.0'
최신 버전을 사용하자
https://github.com/google/dagger/releases
//Dagger
compile 'com.google.dagger:dagger:2.15'
annotationProcessor 'com.google.dagger:dagger-compiler:2.15'
compile 'com.google.dagger:dagger-android:2.15'
compile 'com.google.dagger:dagger-android-support:2.15'
annotationProcessor 'com.google.dagger:dagger-android-processor:2.15'
참고
Dagger2 학습에 필요한 참고자료 커니의 안드로이드 이야기
Dagger2 + MVP 적용한 Google Sample
Dagger2 + Github API 사용한 Sample
Fernando Cejas 가 작성한 Tasting Dagger 2 on Android 번역 정리
'Java,Android' 카테고리의 다른 글
[Java/Android] Java8 Lambda 사용법 (0) | 2018.04.27 |
---|---|
[Android] android.app.Application cannot be cast to xxxx (0) | 2018.04.25 |
[Android] DrawerLayout, NavigationView 사용하기 (1) | 2018.04.21 |
안드로이드 toolbar 중복 코드 지우기 (1) | 2018.04.21 |
[Android] Dalvik , ART 란 ? (0) | 2017.12.18 |
Comments