本地CDI限定词:@Any和@Default
让我们看一下CDI中的开箱即用的限定词
CDI规范声明了三个限定符– @ Any,@ Default,@ New
- @Any :将其视为无所不在的限定词。 它在那里,即使不是;-)
- @Default :顾名思义,当没有其他限定符是特定的时,该限定符被视为默认值。 该规则的唯一例外是同时使用@Named(javax.inject)限定符
- @New :用于按需获取Bean的新实例。 新实例是与范围无关的。 自CDI 1.1起不推荐使用
以下是一些简单的示例:
Bean(类)级别的预选赛
//Explicit qualifier not specified, hence @Default is assumedpublic class CSVParser implements Parser{
//implementation ...
}//Explicit qualifier specified@XMLParser
public class XMLParser implements Parser{
//implementation ...
}
注射点预选赛
public class ParsingService{@InjectParser parser //an implementation of the CSVParser class is injected (default behavior)//business logic
}public class ParsingService{@Inject@XMLParserParser parser //an implementation of the XMLParser class is injected//business logic
}
@Any有什么特别之处?
如前所述,@ Any限定符无处不在,即无论如何它始终存在。 有趣的是,如果您明确提及此注释,它将打开以下选项
- 您可以访问Bean的所有可能的实现
public class ParsingService{@Inject@AnyInstance<Parser> parsers; //javax.enterprise.inject.Instance handles the magic behind the scenespublic void availableParsingOptions(){for(Parser parser : parsers){System.out.println("Parser implementation class: "+ parser.getConcreteImplName());System.out.println("Supported format: "+ parser.getSupportedFormat().getName());}} }
- 它不会抑制默认bean(如果有)或任何显式(合格)实现。 您仍然可以动态查看它们(在运行时)
public class ParsingService{@Inject@AnyInstance<Parser> parsers;public Parser chooseParser(){//@XMLParser (qualifier annotation) being enforced programmaticallyParser selected = parsers.select(new XMLParserQualifier()).get();return (selected.isUnsatisfied() || selected.isAmbiguous()) ? null : selected;}//javax.enterprise.util.AnnotationLiteral project qualifiers as objectsprivate static class XMLParserQualifier extends AnnotationLiteral<XMLParser> implements XMLParser{} }
这就是快速使用默认CDI限定符的全部。 您可能想查看我之前有关CDI中自定义限定词基础的文章之一
干杯!
翻译自: https://www.javacodegeeks.com/2015/09/native-cdi-qualifiers-any-and-default.html
本地CDI限定词:@Any和@Default相关推荐
- java ee cdi_Java EE CDI限定词:快速浏览
java ee cdi 在上下文和依赖注入(CDI)中, 限定符是类型安全和松散耦合的主体. 为什么? 没有CDI,我们将以类似于下面的方式注入Java EE组件 注意:这实际上不会编译,只是假设的代 ...
- Java EE CDI限定词:快速浏览
在上下文和依赖注入(CDI)中, 限定符是类型安全和松散耦合的主体. 为什么? 没有CDI,我们将以类似于下面的方式注入Java EE组件 注意:这实际上不会编译,只是假设的代码片段 例子1 例子2 ...
- php cdi_本机CDI限定词:@Any和@Default
php cdi 让我们看一下CDI中的开箱即用的限定词 CDI规范声明了三个限定符– @ Any,@ Default,@ New @Any :将其视为无所不在的限定词. 它在那里,即使不是;-) @D ...
- cdi-api_使用CDI简化JAX-RS缓存
cdi-api 这篇文章(通过一个简单的示例)说明了如何使用CDI Producers使其在RESTful服务中利用缓存控制语义更加容易 与HTTP 1.0中可用的Expires标头相比, HTTP ...
- 使用CDI简化JAX-RS缓存
这篇文章(通过一个简单的示例)说明了如何使用CDI Producers使其在RESTful服务中利用缓存控制语义更加容易 与HTTP 1.0中可用的Expires标头相比, HTTP 1.1中添加了C ...
- java cdi是什么意思_Java EE CDI的真正好处
我是Java EE的新手,我想知道使用CDI(@ Named,@ Inject)的真正好处是什么.当然我在问谷歌.但是我总是得到诸如"松散耦合"和"更好测试"之 ...
- uniapp 本地相册选择图片
标题 uniapp 本地相册选择图片 export default {data(){return {imageLists:[]}} }methods:{delete(index){ // 获取该数组的 ...
- wangeditor php上传本地图片,配置wangEditor 实现图片上传
首先新建editor.vue文件,用于写配置项 方法1:使用 base64 编码直接将图片插入到内容中 优点 :配置简单 this.editor.customConfig.uploadImgShowB ...
- Hadoop Single Node Setup(hadoop本地模式和伪分布式模式安装-官方文档翻译 2.7.3)
Purpose(目标) This document describes how to set up and configure a single-node Hadoop installation so ...
最新文章
- 将数据库查询结果导出成Excel表格
- 使用Canal实现redis和mysql的同步
- Nginx官网提供的版本类型
- hibernate annotations @Entity hql XX not mapped
- Glide 4.x添加自定义组件原理
- 为什么计算机桌面显示器,电脑显示屏不显示是怎么回事 电脑显示屏不显示如何解决【详细介绍】...
- 计算机绘图培训心得,学习cad制图心得体会
- Jmeter进行接口测试流程步骤详解
- Edge(Linux 版)无法正常同步问题解决
- 14.PIO源码详解4-PIO_EP模块(PIO_EP.v)剖析
- crt链接linux后不能输入退格,SecureCRT 退格键等不好用
- 【20210326期AI简报】用RISC-V微控制器开发难不难?行人搜索AI框架新突破~
- Unix环境高级编程 笔记
- 国内外遥感类核心期刊汇总
- 字符串判断相等和不相等
- 计算机考试照片在线处理,全国普通计算机等级考试照片尺寸 在线调整的方法...
- MySQL 事件跟踪器 , MySQL 无须重启服务 跟踪 SQL , 也无须配置日志
- hotspot源码角度看OOP之类属性的底层实现(一)
- python模拟登录爬淘宝模特信息
- echart中国地图