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. tp5.0 queue 队列操作

    检查是否安装redis(没有请自行百度安装): phpinfo: 配置thinkphp-queue,没有请执行 composer require topthink/think-queue 加入: 创建 ...

  2. 20175315 《Java程序设计》第6周学习总结

    20175215 <Java程序设计>第6周学习总结 教材学习内容总结 第七章主要讲的是内部类,匿名类,异常类等等. 内部类:Java支持在一个类中定义另一个类,称作内部类,包含内部类的类 ...

  3. bently addin 二次开发学习

    元素结构: 一些基本元素的添加与绘制: class CreateElement { public static void LineAndLineString() { Application app = ...

  4. Revit二次开发封装族的替代方法

    使用草图平面:

  5. CocoaLumberjack——带颜色的Log

    CocoaLumberjack可以带颜色Log,具体的好处嘛,谁用谁知道,:] 具体步骤如下: 1. 安装XcodeColors插件 下载地址:https://github.com/robbiehan ...

  6. GYM 100608G 记忆化搜索+概率 2014-2015 Winter Petrozavodsk Camp, Andrew Stankevich Contest 47 (ASC 47)

    https://codeforces.com/gym/100608 题意: 两个人玩游戏,每个人有一个长为d的b进制数字,两个人轮流摇一个$[0,b-1]$的骰子,并将选出的数字填入自己的d个空位之中 ...

  7. sqlserver 获取汉字拼音的首字母(大写)函数

    1:创建函数: USE [test] GO /****** 对象: UserDefinedFunction [dbo].[GetFirstChar] 脚本日期: 02/22/2019 16:39:06 ...

  8. JVM内存模型分析(一个程序运行的例子)

    (.class字节码)类加载到内存之后,内存模型:(ps:.class文件可以通过javap 指令反编译成一个可读文件) 1.java栈,本地方法栈,程序计数器(每个线程私有) 看如下程序: 以该程序 ...

  9. poj1847 Tram(最短路dijkstra)

    描述: Tram network in Zagreb consists of a number of intersections and rails connecting some of them. ...

  10. 四丶前端基础之jquery

    知识预览 一 jQuery是什么? 二 什么是jQuery对象? 三 寻找元素(选择器和筛选器) 四 操作元素(属性,css,文档处理) 扩展方法 (插件机制) 回到顶部 一 jQuery是什么? [ ...