5.5. CDI 应用更改


JBoss EAP 7.4 包含对 CDI 2.0 的支持。因此,使用 CDI 1.0 或 CDI 1.2 编写的应用程序可能会在迁移到 JBoss EAP 7.4 时看到一些行为更改。本节总结了 CDI 1.2 和 CDI 2.0 中所做的一些更改。

您可以在以下引用中找到有关 Weld 和 CDI 2.0 的更多信息:

Bean 归档

bean enabled Bean 类必须部署到 bean 存档中,以确保它们由 CDI 扫描并处理 bean 类。

在 CDI 1.0 中,一个归档在一个 explicit bean 归档中定义,如果它在 META-INF/ 目录中包括一个 beans.xml 文件用于应用程序客户、EJB 或库 JAR,或它在 WEB-INF/ 目录中包括一个 beans.xml 文件用于 WAR。

CDI 1.1 引入了 隐式 bean 归档,存档包含一个或多个带有定义注解的 bean 类,或者一个或多个 session Bean。隐式 bean 存档由 CDI 扫描,在类型发现过程中,只会发现带有 bean 定义注解的类。如需更多信息,请参阅 JSR 365、上下文和依赖注入中的 Type 和 Bean Discovery for Java 2.0。Jakarta 为 bean 定义注解的等效项在 Jakarta 上下文依赖注入 2.0 规格中定义

bean 归档具有 all, annotatednone 的 bean 发现模式。包含一个 bean 归档,其中包含没有版本且无 version 的 bean 发现模式,all 均有默认的 bean 发现模式。包含带有版本 1.1 或更新的 Bean.xml 文件的 bean 归档必须指定 bean-discovery-mode 属性。属性的默认值被 annotated

在以下情况下,存档不是 bean 归档:

  • 它包含一个 Bean.xml 文件,bean-discovery-modenone
  • 它包含一个 CDI 扩展,没有 Bean.xml 文件。

在以下情况下,存档是一个 明确的 归档:

  • 归档包含 Bean.xml 文件,其版本号为 1.1 或以上,并且是 bean-discovery-modeall
  • 归档包含一个 beans.xml 文件,且无版本号。
  • 归档包含空的 beans.xml 文件。

归档是在以下情况下的一个 隐式 存档:

  • 存档包含一个或多个 bean 类,它们带有 bean 定义注解或一个或多个会话 Bean,即使它不包含 Bean.xml 文件。
  • 归档包含一个 beans.xml 文件,bean-discovery-modeannotated

CDI 1.2 限于定义以下注解

  • @ApplicationScoped@SessionScoped@ConversationScoped@RequestScoped annotations
  • 所有其他常规范围类型
  • @Interceptor@Decorator 注解
  • 所有 stereotype 注解,注解为 @Stereotype
  • @Dependent scope 注释

有关 bean 归档的更多信息,请参阅 JSR 365:上下文和依赖注入 Java 2.0 中的 Bean 存档。Jakarta 等同于 Bean 归档,在 Jakarta 上下文依赖注入 2.0 规格中定义

解析解析

CDI 1.2 中更改了对话上下文生命周期,以防止与 Servlet 规范冲突,如 CDI 规范问题 CDI-411 所述。对话范围在所有 servlet 请求期间处于活跃状态,不应阻止其他 servlet 或 servlet 过滤器设置请求正文或字符编码。如需更多信息,请参阅 Jakarta EE 中的整合上下文生命周期

观察器解析

在 CDI 1.2 中,事件解析部分被重写。在 CDI 1.0 中,如果观察器方法具有所有事件限定符,则会向观察器发送事件。在 CDI 1.2 中,如果观察器方法没有事件限定符或者具有事件限定符的子集,则会向观察者发送事件。如需更多信息,请参阅 Observer 解析

返回顶部
Red Hat logoGithubredditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

通过我们的产品和服务,以及可以信赖的内容,帮助红帽用户创新并实现他们的目标。 了解我们当前的更新.

让开源更具包容性

红帽致力于替换我们的代码、文档和 Web 属性中存在问题的语言。欲了解更多详情,请参阅红帽博客.

關於紅帽

我们提供强化的解决方案,使企业能够更轻松地跨平台和环境(从核心数据中心到网络边缘)工作。

Theme

© 2025 Red Hat