文档章节

Dagger2 Scope && Qualifier

lightUp
 lightUp
发布于 2016/11/14 20:20
字数 211
阅读 19
收藏 0

@Scope annotation

    @Scope
    public [@interface](https://my.oschina.net/u/996807) ActivityScope {
    
    }

Another part of JSR-330 standard. In Dagger 2 @Scope is used to define custom scopes annotations. In short they make dependencies something very similar to singletons. Annotated dependencies are single-instances but related to component lifecycle (not the whole application).

Now worth-mentioning is that all custom scopes does the same thing (from code perspective) - they keep single instances of objects. But also they are used in graph validation process which is helpful with catching graph structural problems as soon as possible.

@Qualifier

@Qualifier annotation helps us to create “tags” for dependencies which have the same interface. Imagine that you need to provide two RestAdapter objects - one for Github API, another for facebook API. Qualifier will help you to identify the proper one:

Naming dependencies

@Provides
[@Singleton](https://my.oschina.net/u/674)
@RestAdapter("github")  //Qualifier
RestAdapter provideRestAdapter() {
	return new RestAdapter.Builder()
				.setEndpoint("https://api.github.com")
				.build();
}

another:

@Provides
@Singleton
@RestAdapter("facebook")  //Qualifier
RestAdapter provideRestAdapter() {
	return new RestAdapter.Builder()
			.setEndpoint("https://api.facebook.com")
			.build();
}

and this the qualifier:

@Qualifier
@Documented
@Retention(RUNTIME)
public @interface RestAdapter {

	/** The name. */
	String value() default "";
}

then you can inject the tagged objects:

@Inject
@RestAdapter("github")
RestAdapter githubRestAdapter;

@Inject
@RestAdapter("facebook")
RestAdapter facebookRestAdapter;

reference: Dependency injection with Dagger 2 - Custom scopes

© 著作权归作者所有

共有 人打赏支持
lightUp
粉丝 10
博文 242
码字总数 287936
作品 0
杭州
程序员
Dagger2入门-基本使用(下)

前言 继上篇文章,这篇我们来学习Dagger2的高级用法。如果没看上篇文章的话最好先看下上篇文章再来学习本章,因为本章是接续上篇文章来写的,直接来看的话可能效果不是很好,Dagger2入门-基本...

g小志
2017/11/03
0
0
Dagger2的使用

想学习下Dagger2 ,搜了很多资料但都是附带着RxJava等其他东西,让楼主学习起来比较费时(可能比较笨),本人也没有使用过Dagger1.x,所以学习Dagger2的更是举步维艰啊。 看了很多资料,终于...

zhx2012
2016/07/04
78
0
Dagger2中Scope注解原理是什么?

学习了Dagger2中Scope注解,不太理解 ,比如 定义了 PerActivity ,它的作用域怎么就是Activity了呢? 怎么实现的?? @Scope @Documented @Retention(RetentionPolicy.RUNTIME) public @int...

zhx2012
2016/07/04
279
1
dagger2 让你爱不释手:终结篇

本文作者: 伯乐在线 - 牛犇 。未经作者许可,禁止转载! 欢迎加入伯乐在线作者团队。 前言 如果您对dagger2的概念,整个依赖注入框架还不清楚,可以先了解下我的前2篇文章: 《dagger2让你爱...

刘星石
2016/04/01
268
0
Dagger2让你爱不释手-基础依赖注入框架篇

前言 dagger2的大名我想大家都已经很熟了,它是解决Android或java中依赖注入的一个类库(DI类库)。当我看到一些开源的项目在使用dagger2时,我也有种匆匆欲动的感觉,因此就立马想一探它的究...

技术小能手
07/10
0
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

angular 解决其他电脑不能访问的问题。

ng serve --host 0.0.0.0 --disable-host-check

miaojiangmin
今天
1
0
优酷视频文件怎么转换格式

  以前在优酷上下载视频都只是在手机上观看,但随着科技的发展,对于视频的要求也逐渐增多,不再只是观看视频那么简单,在精彩的部分还会将其单独分割出来,然后进行视频剪辑,可以做出我们...

萤火的萤火
今天
0
0
数据结构:散列

在一个数据结构中查找key元素,用顺序查找、二分查找都需要经过一系列关键之比较才能查找到结果,平均查找长度与数据量有关,元素越多比较次数就越多。 如果根据元素的关键字就能知道元素的存...

京一
今天
0
0
Apache RocketMQ 正式开源分布式事务消息

近日,Apache RocketMQ 社区正式发布4.3版本。此次发布不仅包括提升性能,减少内存使用等原有特性增强,还修复了部分社区提出的若干问题,更重要的是该版本开源了社区最为关心的分布式事务消...

阿里云云栖社区
今天
30
0
使用JavaScript和MQTT开发物联网应用

如果说Java和C#哪个是最好的开发语言,无疑会挑起程序员之间的相互怒怼,那如果说JavaScript是动态性最好的语言,相信大家都不会有太大的争议。随着越来越多的硬件平台和开发板开始支持JavaS...

少年不搬砖老大徒伤悲
今天
0
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部