Seam3 和 Weld CDI 是一回事吗?

Posted

技术标签:

【中文标题】Seam3 和 Weld CDI 是一回事吗?【英文标题】:Is Seam3 and Weld CDI the same thing? 【发布时间】:2013-05-01 12:43:52 【问题描述】:

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

【问题讨论】:

【参考方案1】:

Seam 3 严重依赖 CDI (JSR-299)。 Weld 是 CDI 的reference implementation。另一方面,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 是我们对这种编程模型的实现。

【讨论】:

以上是关于Seam3 和 Weld CDI 是一回事吗?的主要内容,如果未能解决你的问题,请参考以下文章

Google Guice 与 JSR-299 CDI / Weld

使用 CDI/Weld 注入通用 Bean

由于 CDI/Weld 中的 @Named,@ManagedBeans 在 JavaEE6 中过时了吗?

由于 CDI/Weld 中的 @Named,@ManagedBeans 在 JavaEE6 中过时了吗?

EJB 的 CDI 生产者

CDI:beans.xml,我把你放在哪里?