CDI是一组服务,它们一起使用,使开发人员可以轻松地在Web应用程序中使用企业bean和JavaServer Faces技术。CDI设计用于有状态对象,还有许多更广泛的用途,允许开发人员以松散耦合但类型安全的方式集成各种组件的灵活性

CDI 2.0由JSR 365指定.CDI使用的相关规范包括以下内容:

  • JSR 330,Java的依赖注入

  • Managed Beans规范,Java EE平台规范的一个分支(JSR 366)

CDI提供的最基本服务如下。

  • 上下文:此服务使您能够将有状态组件的生命周期和交互绑定到定义良好但可扩展的生命周期上下文。

  • 依赖注入:此服务使您能够以类型安全的方式将组件注入应用程序,并在部署时选择要注入的特定接口的实现。

此外,CDI还提供以下服务:

  • 与表达式语言(EL)集成,允许在JavaServer Faces页面或JavaServer Pages页面中直接使用任何组件

  • 装饰注入组件的能力

  • 使用类型安全拦截器绑定将拦截器与组件相关联的能力

  • 事件通知模型

  • 除了Java Servlet规范定义的三个标准范围(请求,会话和应用程序)之外的Web会话范围

  • 完整的服务提供程序接口(SPI),允许第三方框架在Java EE环境中完全集成

CDI的一个主要主题是松耦合。CDI执行以下操作:

  • 通过定义良好的类型和限定符来解耦服务器和客户端,以便服务器实现可能会有所不同

  • 通过分离协作组件的生命周期

    • 通过自动生命周期管理使组件具有上下文功能

    • 允许有状态组件像服务一样进行交互,纯粹是通过消息传递

  • 通过事件将消息生成器与消费者完全分离

  • 通过Java EE拦截器解耦正交问题

随着松耦合,CDI提供了强大的输入

  • 使用基于字符串的名称消除查找连接和相关性,以便编译器检测输入错误

  • 允许使用声明性Java注释来指定所有内容,在很大程度上消除了对XML部署描述符的需求,并且可以轻松提供内省代码并在开发时理解依赖结构的工具

CDI重新定义了bean的概念,超出了其在其他Java技术中的使用,例如JavaBeans和Enterprise JavaBeans(EJB)技术。在CDI中,bean是定义应用程序状态或逻辑的上下文对象的源。如果可以根据CDI规范中定义的生命周期上下文模型由容器管理其实例的生命周期,则Java EE组件是bean。

更具体地说,bean具有以下属性:

  • 一组(非空)bean类型

  • 一组拦截器绑定

  • 一个bean实现

bean类型定义了bean的客户端可见类型。几乎任何Java类型都可以是bean的bean类型。

  • bean类型可以是接口,具体类或抽象类,可以声明为final或具有final方法。

  • bean类型可以是具有类型参数和类型变量的参数化类型。

  • bean类型可以是数组类型。仅当元素类型相同时,才认为两种数组类型相同。

  • bean类型可以是原始类型。原始类型被认为与其对应的包装类型相同java.lang

  • bean类型可以是原始类型。

Analysis CDI的更多相关文章

  1. Servlet CDI example analysis

    上下文和依赖注入(CDI)使您的对象能够自动为它们提供依赖项,而不是创建它们或将它们作为参数接收.CDI还为您管理这些依赖项的生命周期. 例如,考虑以下servlet: @WebServlet(&qu ...

  2. Servlet CDI Example Analysis

    上下文和依赖注入(CDI)使您的对象能够自动为它们提供依赖项,而不是创建它们或将它们作为参数接收.CDI还为您管理这些依赖项的生命周期. 例如,来看下面这个servlet: @WebServlet(& ...

  3. servlet cdi analysis

    CDI中最令人兴奋的功能是允许每个人在Java EE平台中编写强大的扩展性功能,甚至于改变其核心本身.这些扩展性功能是可以完全移植到任何支持CDI的环境中. CDI的一些主要特性 1.类型安全:CDI ...

  4. Why many EEG researchers choose only midline electrodes for data analysis EEG分析为何多用中轴线电极

    Source: Research gate Stafford Michahial EEG is a very low frequency.. and literature will give us t ...

  5. Automated Memory Analysis

    catalogue . 静态分析.动态分析.内存镜像分析对比 . Memory Analysis Approach . volatility: An advanced memory forensics ...

  6. Sentiment Analysis resources

    Wikipedia: Sentiment analysis (also known as opinion mining) refers to the use of natural language p ...

  7. Call for Papers IEEE/ACM International Conference on Advances in Social Network Analysis and Mining (ASONAM)

    IEEE/ACM International Conference on Advances in Social Network Analysis and Mining (ASONAM) 2014 In ...

  8. 主成分分析(principal components analysis, PCA)

    原理 计算方法 主要性质 有关统计量 主成分个数的选取 ------------------------------------------------------------------------ ...

  9. 《利用Python进行数据分析: Python for Data Analysis 》学习随笔

    NoteBook of <Data Analysis with Python> 3.IPython基础 Tab自动补齐 变量名 变量方法 路径 解释 ?解释, ??显示函数源码 ?搜索命名 ...

随机推荐

  1. ps切图技巧

    步骤1: ps打开psd文件 步骤2: 点击移动工具,观察左上角的自动选择是否有勾选 ,如果没有最好勾选,对应的选项有图层和组,善于切换这个功能能够有效快速的找到你要的区域 步骤3: 找到要切图的元素 ...

  2. CSS3 Flex布局

    Flex 用于使页面上的内容自适应屏幕 首先,在网页代码的头部,加入一行viewport元标签. <meta name=”viewport” content=”width=device-widt ...

  3. 集成方法 Bagging原理

    1.Bagging方法思路 Bagging独立的.并行的生成多个基本分类器,然后通过投票方式决定分类的类别 Bagging使用了自助法确定每个基本分类器的训练数据集,初始样本集中63.2%的数据会被采 ...

  4. application.properties 文件和 application.yml 文件的区别

    yml文件的好处,天然的树状结构,方便查看,最终会转成application.properties 注意点: 1,原有的key,例如spring.jpa.properties.hibernate.di ...

  5. 20175204 张湲祯 2018-2019-2《Java程序设计》第七周学习总结

    20175204 张湲祯 2018-2019-2<Java程序设计>第七周学习总结 教材学习内容总结 -第八章常用实用类要点: 一.String类: 1.String类所在的包:java. ...

  6. 嵌入式Linux学习路线

    最近比较忙,对于嵌入式的相关学习一直没有很好的开展.今天也看了不少的嵌入式Linux的学习路线,也和几个工作过的朋友聊了聊,想把之后的学习过程记录下来. 自己以后想从事驱动开发这方面的工作,因为大多数 ...

  7. scrapy 爬取时很多重复 及日志输出

    日志输出参考:https://blog.csdn.net/weixin_41666747/article/details/82716688 首先 item 要设置循环外 第二,request 要设置下 ...

  8. C# EntityFramework Code First 迁移

    如果使用的是 Code First 工作流,推荐使用 Code First 迁移改进应用程序的数据库架构. 迁移提供一组允许以下操作的工具: 创建可用于 EF 模型的初始数据库 生成迁移以跟踪对 EF ...

  9. 【java】java基本用法记录

    java用法总结 计时 long startTime = System.nanoTime(); solution.process(inputFile); long endTime = System.n ...

  10. 学习笔记_J2EE_Spring(一)_入门

    3.      Spring概述 3.1.   Spring是什么 Spring是一个优秀的高可用的JavaEE轻量级开发框架.提供一站式开发解决方案. 3.2.   Spring框架出现的背景 在世 ...