14

这可能是一个愚蠢的问题,但我对此感到困惑,我在任何地方都找不到任何明确的解释。

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

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

所以我的问题是这些

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

我知道这些问题源于我对 Java EE 整个生态系统的了解不足,但任何答案都将不胜感激

4

1 回答 1

24

JSR330 处理依赖注入。实现例如 Guice、HK2 和 Spring。Weld 确实实现了 JSR330,但更进一步,它还实现了 JSR299,指定模块、拦截器、自定义范围……请参阅这篇文章进行简短比较。

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

于 2014-08-13T20:01:43.180 回答