上下文和依赖关系注入 (Contexts and Dependency Injection, CDI)
了解 Java™ EE 平台 (CDI 1.2) 的上下文和依赖关系注入 1.2 ,这是基于 JBoss Weld 的 JSR 346 实现。
CDI 在应用程序中通过在该模块中存在 beans.xml 文件或通过在 JSR 346 规范中定义的 Bean 定义注释来激活。 可以在 Web 归档 (WAR) 的 WEB-INF 目录中或其他类型归档的 META-INF 目录中找到 beans.xml 文件。 激活时,容器提供如下服务:
- 上下文管理
- 类型安全依赖性注入:根据需要启动和注入 CDI 管理的 bean。
- 实现一个或多个 bean 接口且可包含业务逻辑的修饰符。 缺省情况下,禁用修饰符。 每个 bean 可以有多个修饰符,并且顺序由 beans.xml 文件定义。 使用 beans.xml 或 @Priority 来启用这些修饰符。
- 拦截器绑定:拦截器通过使用拦截器绑定类型绑定,它们可在 beans.xml 文件中手动启用,也可以使用 @Priority 全局启用。
- 事件模型
- 在使用表达式语言 (EL) 的 JavaServer Faces (JSF) 和 JavaServer Pages (JSP) 文件中的集成
- 支持注入和拦截器使用的 JavaEE 组件类
重要信息: CDI 未提供容器管理的事务和安全性。
避免麻烦: 缺省 WebSphere® Application Server 传统 类装入器策略
Class loader for
each WAR file in application仅支持 CDI ,而不支持替代类装入器策略 single class loader for
application setting。