Seam3和Weld CDI是一回事吗?

Yas*_*har 3 seam seam3 jboss-weld weld

也许这似乎是一个愚蠢的问题,但我真的很困惑.Seam 3和Weld CDI是一样的吗?我读一些职位,其中提到"CDI(焊接)/接缝3",我应该把它们看成是一回事吗?

Mag*_*lex 7

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

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

在此输入图像描述

所以问题的答案是否定的,但是Seam广泛使用Weld(或任何CDI实现).这可能是您经常看到有关"CDI(Weld)/ Seam"的帖子的原因.

请注意,Seam 3的实现已经停止,可能是因为Java EE在这些年中已经有所改进.

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

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

此页面上还有以下信息:

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

最后,这应该告诉你:

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