4

也许这似乎是一个愚蠢的问题,但我真的很困惑。Seam 3 和 Weld CDI 是一回事吗?我正在阅读一些涉及“CDI(焊接)/接缝 3”的帖子,我应该将它们视为同一件事吗?

4

1 回答 1

7

Seam 3 严重依赖 CDI (JSR-299)。Weld 是 CDI 的参考实现。另一方面,Seam是一个用于开发 Web 应用程序的完整框架,具有大量功能(请参阅链接中的模块列表)。

通常,CDI 实现由 Java EE 应用程序服务器(例如,JBoss/Wildfly 随 Weld 提供)提供。然而,任何 CDI 的完整实现都应该适合与 Seam 一起使用。看这张图片:

在此处输入图像描述

因此,您的问题的答案是否定的,但 Seam 广泛使用 Weld(或任何 CDI 实现)。这可能就是您经常看到提到“CDI(焊接)/焊缝”的帖子的原因。

请注意,Seam 3 的实现已经停止,可能是因为这些年来 Java EE 的改进。

这是Seam 项目页面中有关Weld的信息:

Weld 是 JSR-299 的参考实现 (RI):Java EE 平台 (CDI) 的 Java 上下文和依赖注入。CDI 是依赖注入和上下文生命周期管理的 Java 标准

页面上还有以下信息:

  • CDI 是 Java EE 中包含的 JCP 规范
  • Weld 是 CDI 的参考实现
  • Seam 3 是一组扩展 CDI 以提供 Java EE 6 之外的功能的模块

最后,这应该让您清楚:

然而,Seam 3 是 JSR-299 的超集。将 JSR-299 视为 Seam 3 的核心——它是您的应用程序组件以及构成 Seam 框架的内置组件的基本编程模型。Weld 是我们对这种编程模型的实现。

于 2013-05-20T11:38:10.477 回答