代码之家  ›  专栏  ›  技术社区  ›  user2465039

Weld和HK2之间的关系是什么

  •  14
  • user2465039  · 技术社区  · 10 年前

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

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

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

    所以我的问题是

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

    我理解这些问题是由于我对JavaEE的整个生态系统了解不足而产生的,但任何答案都将非常感谢

    1 回复  |  直到 10 年前
        1
  •  24
  •   Jan Galinski    9 年前

    JSR330处理依赖注入。实现例如Guice、HK2和Spring。Weld确实实现了JSR330,但更进一步,它还实现了JSR299,指定了模块、拦截器、自定义范围等。。。看见 this article 进行简短比较。

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