`
equalxx
  • 浏览: 65466 次
  • 性别: Icon_minigender_2
  • 来自: 北京
社区版块
存档分类
最新评论

CDI框架笔记-weld reference中文翻译(一)-CDI Reference Implementation

阅读更多

我们下一个工作目标要用CDI来实现了。架构师提供了我们的学习文档,他说除了此文档以外没什么好的中文资料了

Weld 2.4.1.Final - CDI Reference Implementation

文档地址:http://docs.jboss.org/weld/reference/latest/en-US/html_single/

PDF下载地址:http://docs.jboss.org/weld/reference/latest/en-US/pdf/weld-reference.pdf

 

由于本人看书喜欢斟字酌句(这真不是个好习惯,看一本书要大半年,简直蛋疼),所以既然要做笔记,干脆翻译了。文档本身也是很精练,没什么废话,所以翻译完了也可以当做笔记了。

 

请尊重成果,如需转载请注明出处,谢谢合作:)http://equalxx.iteye.com/,文档页数尚可,近期每天更新。本人也是小白一个,所以翻译有问题希望大家一起指出并改正,大部分程序员英文阅读都可以,所以也建议尽可能读英文,对一些概念理解得更准确。

 

特别感谢谷歌翻译。

 

 

 

Part I. Beans

 

CDI服务提供了:

  1. 对于状态对象,将其改进后的生命周期绑定在定义明确的上下文中
  2. 一种安全的依赖注入方法、
  3. 通过事件消息机制进行对象间交互
  4. 一个更好的方式去给对象绑定拦截器,以及一种叫做装饰器的新的拦截器,这种拦截器更适合解决业务问题。
  5. SPI用于容器开发可移植的扩展程序

 

绑定到生命周期上下文的对象称为bean CDI包括对几个的内置支持

不同种类的bean,包括以下Java EE组件类型:

  1. 托管bean
  2. EJB 会话bean

 

托管beanEJB会话bean都可能注入其他bean 但是一些其他的对象,

其本身不是本文使用的意义上的bean,也有可以通过CDI注入的bean

Java EE平台中,以下类型的组件可能注入了bean

  1. 消息驱动的bean
  2. 拦截器,
  3. servletservlet筛选器和servlet事件监听器,
  4. JAX-WS服务端点和处理程序,
  5. JAX-RS资源,提供程序和javax.ws.rs.core.Application子类
  6. JSP标记处理程序和标记库事件监听器。

 

CDI解决了一些不熟悉API用户的以下疑问:

  1. 这个对象的生命周期是什么
  2. 它能同时有多少客户端
  3. 它是多线程的吗
  4. 我如何从客户端访问它
  5. 我需要显式地销毁它吗
  6. 在我当前没有使用它的时候,我需要在哪里保持引用,
  7. 我该怎样定义一个可替换的实现方法,以方便不同的部署场景
  8. 我该如何跟其它对象共享此对象

 

CDI不仅仅是一个框架,它是一个完整的编程框架。CDI的主旨是强类型松耦合。让我们研究下这句话是什么意思。

 

一个bean只规定了它所依赖的其它bean的类型和语义,它不需要知道确切的生命周期,具体实现,线程模型,或者任何和bean互动的其他客户端。但更强大的是,一个bean的具体实现,生命周期和线程模型可以根据部署场景而变化,而不影响任何客户端。这种松耦合可以使代码更容易维护。

 

事件,拦截器和装饰器增强了这种模型中固有的松耦合:

  1. 用事件消息机制分离事件产生者和消费者
  2. 用拦截器分离技术实现和业务逻辑
  3. 装饰器允许划分业务关系

 

更强的是,CDI在提供这些性能的同时保持着类型安全。CDI管理对象并不依赖基于字符串的标识符,取而代之的是,CDI利用的是java对象模型中已经写入的信息,使用一种新的编程模式(叫做限定符注解),去管理bean,及它们的依赖,以及拦截器,装饰器,和它们的事件消费者。部署信息使用最精简的XML描述符来设定。

 

但是CDI不是一个局限的编程模型,它不会指定你怎么去构建你的应用程序,怎么处理持久性,或是规定用什么web框架。这些东西都是由你自己决定的。

 

 

CDI提供了一个全面SPI,可以让未来javaEE规范定义的其他类型的对象,或是第三方的框架,利用CDI服务和对其他类型对象的交互来进行无缝整合。CDI受到许多现有Java框架的影响,包括SeamGuiceSpring。但CDI有着自己独特的特性,比Seam更安全(类型安全),比Spring更具状态性且不那么多xml配置,比Guice有更多的web和企业级应用。但是它离不开来自这些框架的启发以及辛勤工作的JSR-299JSR-346专家组(EG)。最后,CDI是一个Java Community Process [http://jcp.org]JCP)标准。 Java EE 7要求所有兼容的应用程序服务器都要支持JSR-346(甚至在Web配置文件中)。

 

未完待续

请尊重成果,如需转载请注明出处,谢谢合作:)http://equalxx.iteye.com/

 

 

5
0
分享到:
评论

相关推荐

    cdi-api-1.0-sources.jar

    cdi-api-1.0-sources.jarcdi-api-1.0-sources.jarcdi-api-1.0-sources.jar

    cdi-api-2.0.SP1.jar

    CDI (以前称为JSR 299)是一种尝试描述依赖注入的真实标准的尝试。 乍一看,CDI的吸引力在于SpringSource和Google都参与了规范团队。 CDI是Java EE 6堆栈的一部分,这意味着在Java EE 6兼容容器中运行的应用程序...

    cdi-api-1.1

    cdi-api-1.1 <name>CDI APIs <description>APIs for CDI (Contexts and Dependency Injection for Java EE) <url>http://www.seamframework.org/Weld</url>

    pax-cdi-web-openwebbeans-0.7.0.zip

    今天我们将深入探讨一个名为“pax-cdi-web-openwebbeans-0.7.0.zip”的开源项目,它结合了JavaCC和Gradle,为开发者提供了强大的工具集。首先,我们要理解这个项目的核心——JavaCC和Gradle,以及它们如何在这个特定...

    cdi-tck-ext-lib-1.2.0.Beta1.zip

    【标题】"CDI-TCK-EXT-LIB-1.2.0.Beta1.zip" 涉及的是CDI(Contexts and Dependency Injection)测试兼容性工具包的一个扩展库,版本为1.2.0 Beta1。CDI是Java EE平台中的一个核心规范,它提供了在Java应用中管理和...

    cdi-tck-api-1.1.0.Beta2.zip

    【标题】"cdi-tck-api-1.1.0.Beta2.zip" 提供的是CDI(Contexts and Dependency Injection)技术规范测试工具包(Test Compatibility Kit)的API,这是Java EE平台中的一个核心组件,用于管理组件的生命周期和依赖...

    德力西CDI9100-S变频器说明书(英文).pdf

    综上所述,德力西CDI9100-S系列变频器说明书是一个全面的指南,涵盖了从产品基本信息到安全使用、安装、维护,以及操作过程中的注意事项。用户应当重视这份说明书,确保在操作前阅读并理解,以避免设备损坏和人身...

    pax-cdi-extension-0.4.0.zip

    【标题】"pax-cdi-extension-0.4.0.zip" 涉及的是一个名为"PAX CDI Extension"的开源项目,其版本为0.4.0。PAX CDI(普罗米修斯CDI)是OSGi(开放服务网关联盟)环境中用于实现Java Contexts and Dependency ...

    errai-cdi-jetty-2.4.2.Final.zip

    【标题】"errai-cdi-jetty-2.4.2.Final.zip" 提供的是一个集成Errai CDI框架与Jetty服务器的版本。这个压缩包中的内容可能包括了Errai CDI库的源码、相关的配置文件以及用于运行Jetty服务器的脚本和依赖。Errai CDI...

    bean-validator-cdi-2.2.0-b23.zip

    在Java开发领域,Bean Validation和Context Dependency Injection(CDI)是两个重要的技术框架,它们为应用程序提供了强大的数据验证和依赖注入功能。这里我们将深入探讨的是Bean Validator 2.2.0-b23版本与CDI的...

    cdi-api-1.0.jar

    CDI(Contexts and Dependency Injection 上下文依赖注入),是JAVA官方提供的依赖注入实现,可用于Dynamic Web Module中

    jooq-cdi-codegen-2.2.zip

    标题中的"jooq-cdi-codegen-2.2.zip"指的是JOOQ(Java Object Oriented Querying)的一个特定版本,2.2,与CDI(Contexts and Dependency Injection)集成的代码生成器。JOOQ是一个用于Java的SQL库,它允许直接在...

    cdi-api-1.0-SP1.jar

    java运行依赖jar包

    bean-validator-cdi-2.2.0-b25.zip

    【标题】"bean-validator-cdi-2.2.0-b25.zip" 是一个与Java Bean验证和CDI(Contexts and Dependency Injection)相关的开源项目。这个版本号2.2.0-b25表明它是该项目的第二个主要版本的第25个次要修正版。Bean验证...

    cdi-weld:焊接CDI简介

    CDI-上下文和依赖注入 内容: 资源和材料 ↑ 介绍 多年来,程序员已经编写了使用众所周知的new关键字创建对象的代码。 随着时间的流逝,程序变得越来越复杂,维护繁琐的创建逻辑变得越来越困难,同时又保持了代码...

    cdi jsf java ee 6 weld

    在IT行业中,CDI(Contexts and Dependency Injection)和JSF(JavaServer Faces)是Java EE 6框架中的核心组件,而Weld是CDI的一个实现。这些技术为开发高效、可维护的Web应用程序提供了强大的支持。让我们深入探讨...

    development-weld-cdi:焊接cdi示例

    在“development-weld-cdi-master”这个项目中,我们可能会看到如何配置和使用Weld容器。 7. **集成测试**:由于CDI的特性,编写测试通常变得更为简单。可以使用如Arquillian这样的测试框架,它允许在真实的容器...

Global site tag (gtag.js) - Google Analytics