让我们看一下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相关推荐

  1. java ee cdi_Java EE CDI限定词:快速浏览

    java ee cdi 在上下文和依赖注入(CDI)中, 限定符是类型安全和松散耦合的主体. 为什么? 没有CDI,我们将以类似于下面的方式注入Java EE组件 注意:这实际上不会编译,只是假设的代 ...

  2. Java EE CDI限定词:快速浏览

    在上下文和依赖注入(CDI)中, 限定符是类型安全和松散耦合的主体. 为什么? 没有CDI,我们将以类似于下面的方式注入Java EE组件 注意:这实际上不会编译,只是假设的代码片段 例子1 例子2 ...

  3. php cdi_本机CDI限定词:@Any和@Default

    php cdi 让我们看一下CDI中的开箱即用的限定词 CDI规范声明了三个限定符– @ Any,@ Default,@ New @Any :将其视为无所不在的限定词. 它在那里,即使不是;-) @D ...

  4. cdi-api_使用CDI简化JAX-RS缓存

    cdi-api 这篇文章(通过一个简单的示例)说明了如何使用CDI Producers使其在RESTful服务中利用缓存控制语义更加容易 与HTTP 1.0中可用的Expires标头相比, HTTP ...

  5. 使用CDI简化JAX-RS缓存

    这篇文章(通过一个简单的示例)说明了如何使用CDI Producers使其在RESTful服务中利用缓存控制语义更加容易 与HTTP 1.0中可用的Expires标头相比, HTTP 1.1中添加了C ...

  6. java cdi是什么意思_Java EE CDI的真正好处

    我是Java EE的新手,我想知道使用CDI(@ Named,@ Inject)的真正好处是什么.当然我在问谷歌.但是我总是得到诸如"松散耦合"和"更好测试"之 ...

  7. uniapp 本地相册选择图片

    标题 uniapp 本地相册选择图片 export default {data(){return {imageLists:[]}} }methods:{delete(index){ // 获取该数组的 ...

  8. wangeditor php上传本地图片,配置wangEditor 实现图片上传

    首先新建editor.vue文件,用于写配置项 方法1:使用 base64 编码直接将图片插入到内容中 优点 :配置简单 this.editor.customConfig.uploadImgShowB ...

  9. Hadoop Single Node Setup(hadoop本地模式和伪分布式模式安装-官方文档翻译 2.7.3)

    Purpose(目标) This document describes how to set up and configure a single-node Hadoop installation so ...

最新文章

  1. 将数据库查询结果导出成Excel表格
  2. 使用Canal实现redis和mysql的同步
  3. Nginx官网提供的版本类型
  4. hibernate annotations @Entity hql XX not mapped
  5. Glide 4.x添加自定义组件原理
  6. 为什么计算机桌面显示器,电脑显示屏不显示是怎么回事 电脑显示屏不显示如何解决【详细介绍】...
  7. 计算机绘图培训心得,学习cad制图心得体会
  8. Jmeter进行接口测试流程步骤详解
  9. Edge(Linux 版)无法正常同步问题解决
  10. 14.PIO源码详解4-PIO_EP模块(PIO_EP.v)剖析
  11. crt链接linux后不能输入退格,SecureCRT 退格键等不好用
  12. 【20210326期AI简报】用RISC-V微控制器开发难不难?行人搜索AI框架新突破~
  13. Unix环境高级编程 笔记
  14. 国内外遥感类核心期刊汇总
  15. 字符串判断相等和不相等
  16. 计算机考试照片在线处理,全国普通计算机等级考试照片尺寸 在线调整的方法...
  17. MySQL 事件跟踪器 , MySQL 无须重启服务 跟踪 SQL , 也无须配置日志
  18. hotspot源码角度看OOP之类属性的底层实现(一)
  19. python模拟登录爬淘宝模特信息
  20. echart中国地图

热门文章

  1. 【分享】通过手游赚¥
  2. 手把手教你搭建Maven项目
  3. React中BrowserRouter与HashRouter的区别
  4. Zookeeper 详讲(笔记)1
  5. elementui下拉框选择图片_element ui下拉框如何实现默认选择?
  6. spring boot actuator 入门荔枝
  7. DFS——深度优先搜索基础
  8. aws dynamodb_使用适用于Java 2的AWS开发工具包的AWS DynamoDB版本字段
  9. 设计模式 工厂方法_工厂方法设计模式
  10. java 常规类的可见性_Java 12常规可用性