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 中的 @Named,@ManagedBeans 在 JavaEE6 中过时了吗?