文档章节

Dagger2 Scope && Qualifier

lightUp
 lightUp
发布于 2016/11/14 20:20
字数 211
阅读 19
收藏 0
点赞 0
评论 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
博文 132
码字总数 287936
作品 0
杭州
程序员
Dagger2入门-基本使用(下)

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

g小志 ⋅ 2017/11/03 ⋅ 0

Dagger2的使用

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

zhx2012 ⋅ 2016/07/04 ⋅ 0

Dagger2中Scope注解原理是什么?

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

zhx2012 ⋅ 2016/07/04 ⋅ 1

dagger2 让你爱不释手:终结篇

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

刘星石 ⋅ 2016/04/01 ⋅ 0

Spring 全部注解

Spring自带依赖注入注解: Spring自带的一套依赖注入注解;@Required @Autowired @Component @Scope("singleton) 、@Qualifier、@Order、@ImportResource @Value JSR-250注解:Java平台的公共...

干干 ⋅ 2017/12/06 ⋅ 0

同一个实体的不同注解方式

在一个类中注入俩个不同实现的超类, 举个例子: 现在有个超类Man 它有子类techear 和 student , 而现在又有各类Room 里面注入了俩个Man类, 其中一个Man的实例是Student,另一个Man的实例是t...

younchen ⋅ 2014/07/08 ⋅ 0

spring 高级装配

环境与profile 配置profile bean 在java配置中,可以使用@ProFile注解制定某个Bean属于哪一个profile。例如:@Profile("dev")。 在xml中配置profile通过元素的profile属性,在XML中配置profi...

qq948939246 ⋅ 01/14 ⋅ 0

spring 基于java的配置

7.10 Classpath scanning and managed componets 文档地址: http://docs.spring.io/spring/docs/current/spring-framework-reference/htmlsingle/#beans-classpath-scanning本章中大部分例子......

流光韶逝 ⋅ 2016/09/26 ⋅ 0

控制反转与依赖注入通俗描述

控制反转(IOC): 由框架或其他某些东西来控制需要调用的事件处理器或其他东西,而不是由业务逻辑决定。 举例:spring中的bean,我们在spring项目中配置了datasource后,不需要关注如何调用它...

李矮矮 ⋅ 2016/09/26 ⋅ 0

【Kotlin中使用Dagger2】基础入门篇(二)

概述 在前面文章【Kotlin中使用Dagger2】基础入门篇(一)中,我们介绍了使用Dagger2,通过构造方法,实现了最基本的依赖注入。 这种注入方式,我们需要在依赖类的构造方法上添加@Inejct。但如...

雷宇_ ⋅ 01/09 ⋅ 0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

个人博客的运营模式能否学习TMALL天猫质量为上?

心情随笔|个人博客的运营模式能否学习TMALL天猫质量为上? 中国的互联网已经发展了很多年了,记得在十年前,个人博客十分流行,大量的人都在写博客,而且质量还不错,很多高质量的文章都是在...

原创小博客 ⋅ 36分钟前 ⋅ 0

JavaScript零基础入门——(十一)JavaScript的DOM操作

JavaScript零基础入门——(十一)JavaScript的DOM操作 大家好,欢迎回到我们的JavaScript零基础入门。最近有些同学问我说,我讲的的比书上的精简不少。其实呢,我主要讲的是我在开发中经常会...

JandenMa ⋅ 今天 ⋅ 0

volatile和synchronized的区别

volatile和synchronized的区别 在讲这个之前需要先了解下JMM(Java memory Model :java内存模型):并发过程中如何处理可见性、原子性、有序性的问题--建立JMM模型 详情请看:https://baike.b...

MarinJ_Shao ⋅ 今天 ⋅ 0

深入分析Kubernetes Critical Pod(一)

Author: xidianwangtao@gmail.com 摘要:大家在部署Kubernetes集群AddOn组件的时候,经常会看到Annotation scheduler.alpha.kubernetes.io/critical-pod"="",以表示这是一个关键服务,那你知...

WaltonWang ⋅ 今天 ⋅ 0

原子性 - synchronized关键词

原子性概念 原子性提供了程序的互斥操作,同一时刻只能有一个线程能对某块代码进行操作。 原子性的实现方式 在jdk中,原子性的实现方式主要分为: synchronized:关键词,它依赖于JVM,保证了同...

dotleo ⋅ 今天 ⋅ 0

【2018.06.22学习笔记】【linux高级知识 14.4-15.3】

14.4 exportfs命令 14.5 NFS客户端问题 15.1 FTP介绍 15.2/15.3 使用vsftpd搭建ftp

lgsxp ⋅ 今天 ⋅ 0

JeeSite 4.0 功能权限管理基础(Shiro)

Shiro是Apache的一个开源框架,是一个权限管理的框架,实现用户认证、用户授权等。 只要有用户参与一般都要有权限管理,权限管理实现对用户访问系统的控制,按照安全规则或者安全策略控制用户...

ThinkGem ⋅ 昨天 ⋅ 0

python f-string 字符串格式化

主要内容 从Python 3.6开始,f-string是格式化字符串的一种很好的新方法。与其他格式化方式相比,它们不仅更易读,更简洁,不易出错,而且速度更快! 在本文的最后,您将了解如何以及为什么今...

阿豪boy ⋅ 昨天 ⋅ 0

Python实现自动登录站点

如果我们想要实现自动登录,那么我们就需要能够驱动浏览器(比如谷歌浏览器)来实现操作,ChromeDriver 刚好能够帮助我们这一点(非谷歌浏览器的驱动有所不同)。 一、确认软件版本 首先我们...

blackfoxya ⋅ 昨天 ⋅ 0

线性回归原理和实现基本认识

一:介绍 定义:线性回归在假设特证满足线性关系,根据给定的训练数据训练一个模型,并用此模型进行预测。为了了解这个定义,我们先举个简单的例子;我们假设一个线性方程 Y=2x+1, x变量为商...

wangxuwei ⋅ 昨天 ⋅ 0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部