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 | 29 | 30 | 31 |
Tags
- Singleton
- factory method
- 디자인패턴
- 옵저버 패턴
- 빌터패턴
- 팩토리 메소드
- a
- 함수형프로그래밍
- r
- 프로토타입 패턴
- Kotlin
- ㅓ
- 코틀린
- Design Pattern
- El
- 싱글톤
- ㅋㅁ
- builderPattern
- Observer Pattern
- 디자인패턴 #
- F
- Functional Programming
- PrototypePattern
- designPattern
- 추상팩토리패턴
- Abstract Factory
- 추상 팩토리
Archives
- Today
- Total
오늘도 더 나은 코드를 작성하였습니까?
Android Code Lab(Dagger2) 정리3 본문
여러 가지 이유로 Component에서 동일한 종속성 인스턴스를 제공받을 필요가 있다.
1. 서로 다른 type들이 종속성을 주입받아 생성되어 제공될때 동일한 종속성을 주입받아야 하는 경우.
2. 객체를 만드는 cost이 많이 들고 종속성으로 선언될 때마다 새 인스턴스를 만들고 싶지 않은 경우.
scope를 사용하면 동일한 객체를 Component로 부터 주입받을 수 있습니다.
scope는 Component내의 제공받는 객체의 생명주기를 뜻합니다.
scope를 Component가 주입하는 type에 지정한다는 것은 해당 type을 제공해야 할 때마다 동일한 인스턴스가 사용된다는 것을 의미합니다
AppComponent의 경우 javax.inject 패키지와 함께 제공되는 only scope annotation인 @Singleton 주석을 사용할 수 있습니다.
@Singleton으로 Component에 주석을 추가하면, @Singleton으로 주석이 달린 모든 class 의 범위가 해당 수명으로 지정됩니다.
AppComponent.kt
@Singleton
@Component(modules = [StorageModule::class])
interface AppComponent { ... }
이제 @Singleton으로 주석이 달린 클래스는 AppComponent로 Scope가 지정됩니다
@Singleton
class UserManager @Inject constructor(private val storage: Storage) {
...
}
동일한 UserManager 인스턴스가 RegistrationActivity 및 MainActivity에 제공됩니다.
UserManager도 흰색 점으로 표시됩니다. Context와 마찬가지로 AppComponent의 동일한 인스턴스에서 종속성으로 필요할 때 UserManager의 동일한 인스턴스가 제공됩니다.
'DI > Dagger2' 카테고리의 다른 글
Android Code Lab(Dagger2) 정리5 (0) | 2021.12.22 |
---|---|
Android Code Lab(Dagger2) 정리4 (0) | 2021.12.21 |
Android Code Lab(Dagger2) 정리2 (0) | 2021.12.21 |
Android Code Lab(Dagger2) 정리1 (0) | 2021.12.20 |
Android app에서 Dagger 사용 (0) | 2021.05.03 |