关于Scope
Dagger 2 自带的 Scope
只有一个 @Singleton
,其他的可以通过自定义来实现
1. 前言
(1) Scope
的作用,就是提供在当前 Component
实例 范围内的单例。
假设 DaggerUserComponent 能够提供 User 实例
UserComponent 被自定义的 @UserScope
标注,那就意味着
一旦一个 DaggerUserComponent 实例创建完成,
那么其调用 injectTo 方法,进行注入时,所有注入的 User
对象都是同一个实例
知道 DaggerUserComponent 被重新创建,才会提供一个不一样的User
实例
(2) @Scope
的使用方法
第一种
-
@Scope
注解整个Bean
对象,@inject
注解对应Bean
对象的构造方法 -
@Scope
还需要在Bean
对象注入,出现的Component
中标注
第二种
-
@Scope
配合 在Module
中使用,配合@Provides
一起标注 -
@Scope
需要在Module
出现的Component
中标注
两种方法,其实就是两种提供实例的不同实现,对比前面 一二两篇文章即可看出
第一种是最简单注入时,加上@Scope
第二种是配合@Module
注入式,加上@Scope
2. 进行实践操作
(1) 整体结构构建
实践的内容主要是针对 @Scope
第二种使用方法
因此这�中间@UserScope
只需要添加到 UserModule
和 UserComponent
上
整个类的结构
Dagger2 学习(三)一家之言,仅供参考
网友评论