本地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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/358492.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Oracle 关于事物的描述

事物在Oracle中的4种状态&#xff1a; commit--提交 rollback--全部回滚 savepoint name;--定义一个回滚到这里的点&#xff1a;例如&#xff1a;savepoint a; rollback to [savepoint]name--回滚到指定的点 例如 rollback to a;就回滚到a这个地方 例子&#xff1a; ----------…

简单CSS 总结

目录 CSS 总结 你已经学习了CSS,下一步学习什么呢? CSS 总结 本教程已向你讲解了如何创建样式表来同时控制多重页面的样式和布局。 你已经学会如何使用 CSS 来添加背景、格式化文本、以及格式化边框&#xff0c;并定义元素的填充和边距。 同时&#xff0c;你也学会了如何定…

计算机管理里边如何分盘,如何给电脑分盘【设置门径】

很多小伙伴都遇到过如何给电脑分盘的困惑吧&#xff0c;一些朋友看过网上零散的如何给电脑分盘的处理方法&#xff0c;并没有完完全全明白如何给电脑分盘是如何解决的&#xff0c;今天小编准备了简单的解决办法&#xff0c;只需要按照1&#xff1a;首先我们找到电脑里面的此电脑…

(九十三)蓝牙的基本使用

蓝牙在GameKit框架中实现&#xff0c;可以实现文件传递和游戏通信等&#xff0c;蓝牙的缺点是不能得到文件传输的进度&#xff0c;因此不宜传输大文件。 使用蓝牙的一般步骤如下&#xff1a; ①创建蓝牙设备拾取器&#xff0c;类似于图片拾取器&#xff0c;通过代理方法获取拾取…

电脑常识——host文件修改(屏蔽网站或解开屏蔽)

1. 什么是host文件&#xff1a; Hosts文件主要作用是定义IP地址和主机名的映射关系&#xff0c;是一个映射IP地址和主机名的规定。可以用文本文件打开&#xff01;当用户在浏览器中输入一个需要登录的网址时&#xff0c;系统会首先自动从Hosts文件中寻找对应的IP地址&#xff…

面试提问vue中v-if与v-show的区别以及使用场景

目录 区别 使用场景 总结 区别 1.手段&#xff1a;v-if是通过控制dom节点的存在与否来控制元素的显隐&#xff1b;v-show是通过设置DOM元素的display样式&#xff0c;block为显示&#xff0c;none为隐藏&#xff1b;2.编译过程&#xff1a;v-if切换有一个局部编译/卸载的过程…

清华大学计算机系牛人,高考状元不靠加分靠实力

高考状元不靠加分靠实力来源&#xff1a;京华时报 2010-08-24英才档案 录取院校:清华大学计算机专业 毕业学校&#xff1a;河南省濮阳市油田第一中学 高考分数(理)&#xff1a;678分语文117数学135理综283英语143今年初清华大学举行的有三万余名考生参加的自主招生考试中&#…

Web常见漏洞描述及修复建议

1.SQL注入 漏洞描述 Web程序中对于用户提交的参数未做过滤直接拼接到SQL语句中执行&#xff0c;导致参数中的特殊字符破坏了SQL语句原有逻辑&#xff0c;攻击者可以利用该漏洞执行任意SQL语句&#xff0c;如查询数据、下载数据、写入webshell、执行系统命令以及绕过登录限制等。…

glassfish_具有GlassFish和一致性的高性能JPA –第3部分

glassfish在我的四部分系列的第三部分中&#xff0c;我将说明将Coherence与EclipseLink和GlassFish结合使用的第二种策略。 这就是通过EclipseLink使用Coherence作为二级缓存&#xff08;L2&#xff09;的全部内容。 一般的做法 这种方法将Coherence数据网格应用于依赖于数据库…

应广大粉丝的要求,推荐几本前端书籍

这些书籍平时会直接发送在主页的QQ技术群,有兴趣的可以加一下。 不想去培训机构,不想花大笔钱的学习,那就自学吧!接招

初中学习计算机基础,初中生计算机基础学习心得

导语&#xff1a;为了提高自身的计算机管理业务素质&#xff0c;促进信息技术教学工作的顺利开展&#xff0c;我于2017年3月份在中小学继续教育网上选学了《计算机应用基础》的课程学习。以下是小编为您收集整理提供到的范文&#xff0c;欢迎阅读参考&#xff0c;希望对你有所帮…

java的数据结构

本文转自互联网 1、二叉树&#xff1a;非线性数据结构&#xff0c;常被用于实现二叉查找树和二叉堆 二叉树的第i层至多有2的 i -1次方个结点&#xff1b;深度为k的二叉树至多有2^(k) -1个结点&#xff1b;对任何一棵二叉树T。 满二叉树 完全二叉树 平衡二叉树 2、 二叉树的遍历…

AssertJ的SoftAssertions –我们需要它们吗?

编写好的单元测试的规则之一是&#xff0c;它应该出于某种原因而失败&#xff0c;因此&#xff0c;单元测试应该测试一种逻辑概念。 有时很难在每个测试中拥有一个断言。 为了遵循规则&#xff0c;我们可能在一个测试中每个对象具有多个断言。 但是&#xff0c;在单个测试中存…

早上起来CSDN的PC端主页积分变成了0

没有违法&#xff0c;没有乱纪&#xff0c;这是什么鬼&#xff1f;我刚才百度了一下&#xff0c;很多大牛都有类似的经历&#xff0c;心里舒服多了 平台BUG还是挺多的&#xff0c;说不准哪天就轮到你啦&#xff0c;哈哈&#xff01;&#xff01;

Fofa搜索技巧

Fofa搜索技巧&#xff08;理论加实践的整理&#xff09; 题记 最近在整理以前的知识&#xff0c;不过最近出现职业病了&#xff0c;打开fofa看站点就停不下来。我把常用的fofa查询语句记录下来&#xff0c;方便查阅。钟馗之眼和他有区别也异曲同工。 https://fofa.so/ http://…

魔兽世界阿拉索人数最多服务器,魔兽世界8.3哪个区人多_wow8.3服务器人数统计介绍_3DM网游...

魔兽世界8.3人口最多大区是很多玩家都非常关心的一件事情&#xff0c;很多玩家都想在这个新版本去最多的服务器&#xff0c;很多玩家都想知道服务器人口&#xff0c;来看看魔兽世界8.3哪个区人多&#xff0c;wow8.3服务器人数统计介绍。8.3人口最多大区介绍魔兽世界8.3安苏大区…

如何系统的学习javaScript?赶紧看看吧

当今如果要开发现代网站或web应用(包括互联网创业),都要学会JavaScript。而面对泛滥的JavaScript在线学习资源,却是很难找到一份高效而实用的方法去学习这个“web时代的语言”。有一点需要注意,几年前我们需要知道一个真正的服务器端语言(比如PHP,Rails,Java,Python 或…

Shiro-550反序列化漏洞复现

0x01 漏洞简介Apache Shiro是一款开源安全框架&#xff0c;提供身份验证、授权、密码学和会话管理。Shiro框架直观、易用&#xff0c;同时也能提供健壮的安全性。 Apache Shiro 1.2.4及以前版本中&#xff0c;加密的用户信息序列化后存储在名为remember-me的Cookie中。攻击者可…

css 样式面板,关于 CSS 样式面板

使用“CSS 样式”面板可以跟踪影响当前所选页面元素的 CSS 规则和属性(“当前”模式)&#xff0c;也可以跟踪文档可用的所有规则和属性(“所有”模式)。使用面板顶部的切换按钮可以在两种模式之间切换。使用“CSS 样式”面板还可以在“所有”和“当前”模式下修改 CSS 属性。有…

Fragment 横竖屏切换问题

在默认情况下当发生横竖屏切换时&#xff0c;当前Activity中的fragment都会通过Fragment.instantiate重新生成&#xff0c;该方法将使用默认的构造函数来生成相应的Fragment&#xff0c;所以如果没有默认构造函数的话将会报错&#xff0c;例如&#xff1a;class MyFragment { p…