Weld和HK2之间的关系是什么?

use*_*039 11 glassfish cdi weld hk2

这可能是一个愚蠢的问题,但我很困惑,我无法在任何地方找到任何明确的解释.

HK2是一个实现JS330的依赖注入框架,它是Glassfish V3和V4的基础.据我所知,泽西岛使用它

Weld是CDI的参考实现,它也是一个依赖注入框架,也可以在Glassfish中使用?

所以我的问题是这些

  • 它们是同一规格的不同实现吗?
  • 它们是不同规格的实现吗?
  • 在什么情况下我应该使用其中一个?

我理解这些问题源于我对Java EE整个生态系统的微薄理解,但我们将非常感谢任何答案

Jan*_*ski 18

JSR330处理依赖注入.实现是例如Guice,HK2和Spring.Weld确实实现了JSR330,但是通过实现JSR299,指定模块,拦截器,自定义范围等,更进了一步......参见本文进行简短比较.

Java EE结合了多个规范,不仅包括注入,还包括持久性,安全性,Web服务,服务器端面......,因此需要像glassfish或jboss这样的应用程序服务器,而(C)DI可以很容易地与标准Web容器一起使用(jetty,tomcat) )甚至是独立的应用程序.