上下文和依赖性注入 (CDI)

了解用于 Java™ EE 平台的上下文和依赖性注入 1.2 (CDI 1.2),它是基于 JBoss Weld 的 JSR 346 实现。

如果该模块中存在 beans.xml 文件,或者 JSR 346 规范中定义了 bean 定义注释,那么将在应用程序中激活 CDI。可以在 Web 归档 (WAR) 的 WEB-INF 目录或其他类型归档的 META-INF 目录中找到 beans.xml 文件。激活后,容器将提供如下服务:
  • 上下文管理
  • 类型安全依赖关系注入:将根据需要实例化和注入CDI 管理的 bean。
  • 修饰符,实现一个或多个 bean 接口并可以包含业务逻辑。缺省情况下禁用修饰符。针对每个 bean,您可以具有多个修饰符,且 beans.xml 文件定义顺序。使用 beans.xml@Priority 来启用修饰符。
  • 拦截器绑定:在 beans.xml 文件中手动启用或使用 @Priority 全局启用的拦截器是通过使用拦截器绑定类型绑定的。
  • 事件模型
  • 集成至使用 Expression Language (EL) 的 JavaServer Faces (JSF) 和 JavaServer Pages (JSP) 文件
  • 支持注入和使用拦截器的 JavaEE 组件类

将针对 JSR 299 和 JSR 330 的与规范相关的 API 类以及基于 Apache OpenWebBeans 的 IBM® 修改的实现类打包到应用程序服务器运行时环境中。

尽管产品 CDI 实现基于 Apache OpenWebBeans,但对 OpenWebBeans 添加了以下更改和新增项以支持与服务器运行时集成:
  • 与支持可注入组件的 WebSphere® Application Server(传统) 中的其他 Java 平台企业修订版 (Java EE) 容器集成。
  • 使用 WebSphere Application Server(传统) 字代码扫描程序的 ScannerService 实现。
  • 直接使用产品 Enterprise JavaBeans (EJB) 元数据来确定 EJB 类型。
  • 针对 CDI 应用程序自动注册 servlet 侦听器、过滤器和拦截器,从而不必由每个应用程序再行添加。
  • 许多 OpenWebBeans 服务编程接口 (SPI) 的特定于产品的实现,例如,ResourceInjectionService、TransactionService 和故障转移服务。
要点: 容器管理的事务和安全性不是由 CDI 提供。
避免故障 避免故障: 只有缺省 WebSphere Application Server(传统) 类装入器策略(针对应用程序中每个 WAR 文件的类装入器)才支持 CDI,备用类装入器策略(针对应用程序设置的类装入器)不支持 CDI。gotcha

指示主题类型的图标 概念主题



时间戳记图标 最近一次更新时间: last_date
http://www14.software.ibm.com/webapp/wsbroker/redirect?version=cord&product=was-nd-mp&topic=cweb_cdi
文件名:cweb_cdi.html