php cdi

让我们看一下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

php cdi

php cdi_本机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. 本地CDI限定词:@Any和@Default

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

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

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

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

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

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

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

  7. nrf52832 学习笔记(五)蓝牙主从机连接和连接参数更新

    nrf52832 学习笔记(五)蓝牙主从机连接和连接参数更新 主机连接 nrf52832 SDK中主机连接从机需要使用 sd_ble_gap_connect(ble_gap_addr_t const ...

  8. input发送a.jax_Java EE 7和JAX-RS 2.0

    input发送a.jax 带有JAX-RS 2.0的Java EE 7带来了几个有用的功能,这些功能进一步简化了开发并导致创建了更加复杂但精简的Java SE / EE RESTful应用程序. 亚当 ...

  9. 锡兰的Weld和Guice依赖注入

    我个人对依赖注入的好处持矛盾态度. 一方面,我认识到它在某些容器环境(例如Java EE)中的有用性. (根据记录,我是JCP专家组的CDI 1.0规范的作者.)另一方面,鉴于我过去几年一直在从事的工 ...

最新文章

  1. Android环境结构--安装Eclipse错
  2. C语言:指针的几种形式
  3. 微信小程序隐藏标题栏navigationBar的方法
  4. [Python人工智能] 十五.无监督学习Autoencoder原理及聚类可视化案例详解
  5. LeetCode之Weekly Contest 90
  6. 学校计算机教室安全预案,小学校园微机室安全事故应急疏散预案
  7. Spring定时器的运用
  8. Servlet 2.4 规范之第四篇:Servlet上下文
  9. 现代操作系统(原书第4版)英文中文答案
  10. 项目启动时,出现了Consider defining a bean of type ‘xxx’ in your configuration 问题。
  11. 小米8刷官方欧版rom并从国内版rom提取安装MiPay、门卡模拟
  12. vi中 wq 、wq!、x、q、q!区别
  13. 如何删除电脑上一些恶意安装软件?
  14. echarts青岛市地图下钻到区市及根据各个区市经纬度在各区市地图绘制散点图和道路线
  15. 启动计算机引导windows10,Win10系统引导项丢失了怎么办?修复Win10系统启动引导项的方法...
  16. DQN、DDQN、Dueling DQN、PER DQN
  17. 用GIF图片来告诉大家程序猿的真实生活 ————“你熬了一整夜、耗了一整天,开始调试代码时:” 那张最有感觉了,你们感受一下。。。
  18. 数据科学库(HM)_第2节_matplotlib绘图
  19. 阴天(唐伯虎点秋香版)3铃声 阴天(唐伯虎点秋香版)3手机铃声免...
  20. 我们已经进入网络犯罪2.0时代

热门文章

  1. P2710-数列【Splay】
  2. ssl提高组周四备考赛【2018.10.18】
  3. 【背包】SMRTFUN
  4. P2468 [SDOI2010]粟粟的书架 动态规划,主席树,二分答案
  5. codeforces 938E MaxHistory 组合数学
  6. 2、oracle数据库的用户和权限
  7. Scala与Java差异(五)之Map与Tuple
  8. Attentive Sequence to Sequence Networks
  9. Java 程序员必须掌握的 5 个注解
  10. 没有回家的等于没过年