【问题标题】:Whats the relationship between Spring and javax.enterprise.inject?Spring和javax.enterprise.inject有什么关系?
【发布时间】:2011-02-28 13:26:17
【问题描述】:

我在这里阅读了一篇关于 Java EE 应用服务器的 Wikipedia 文章:

http://en.wikipedia.org/wiki/Java_Platform,_Enterprise_Edition#Java_EE_5_certified

它说 Java App Services 实现的 2 个 API 是:

javax.enterprise.inject
javax.enterprise.context

这些都与应用程序上下文和依赖注入 JSR-299 有关。我以前从未听说过这些 API。 Spring 是否实现了这些 API?如果他们这样做,对任何人来说都重要吗?

【问题讨论】:

    标签: spring dependency-injection cdi jsr299


    【解决方案1】:

    Spring 确实支持 JSR-330 的 @Inject - 它可以用来代替 @Autowired(除了它没有 required 属性)。

    您还需要在类路径中包含 JSR 330 jar。

    http://static.springsource.org/spring/docs/3.0.x/spring-framework-reference/html/beans.html#beans-autowired-annotation

    【讨论】:

    【解决方案2】:
    • JSR-330 定义了一组注释 (javax.inject),它们将用于不同的依赖注入框架。该规范由 Rod Johnson(来自 Spring)和 Bob Lea(来自(Google Guice))领导
    • (部分)由于规范的原因,spring 和 guice 支持这组注释

    这是spring使用的JavaEE部分。

    由 JBoss 的 Gavin King 领导的 JSR-299 使用了相同的集合。但是,JSR-299(也称为 CDI)使用 javax.enterprise.inejct/context 并且是一个全新的依赖注入框架。它基于 spring、guice 和 seam 的思想,但被正式指定为 JSR,旨在涵盖许多极端情况以及与其他 JavaEE 部分的平滑集成。

    JSR-299 定义了 API 和 SPI,以便可以开发具体的实现。当前的实现是JBoss WeldApache OpenWebBeansResin CanDI

    所以,回答你的问题 - javax.enterprise.inject 和 spring 之间没有直接关系。

    【讨论】:

    • 那么 JSR-299 是 API(如 JPA 或 JTA)还是实际实现?如果是 API,你知道 Spring 最终会不会实现它吗?
    • 这是一个规范 - API 和 SPI。不,我认为spring不会实现它。查看我的更新。
    猜你喜欢
    • 2020-03-06
    • 2020-02-04
    • 1970-01-01
    • 2014-08-17
    • 2018-12-02
    • 1970-01-01
    • 2018-10-07
    • 2016-09-28
    • 2013-07-02
    相关资源
    最近更新 更多