Spring 会支持 CDI 吗? [关闭]
Posted
技术标签:
【中文标题】Spring 会支持 CDI 吗? [关闭]【英文标题】:Will Spring support CDI? [closed] 【发布时间】:2011-11-06 11:51:24 【问题描述】:对于 Java 开发人员来说,Spring 一直是一个很好的 DI 和 AOP 框架。
现在,DI 和 AOP 有了一个标准规范,即 CDI。
如果不支持相关标准,任何好的产品都不能再保持良好状态。 (比如Hibernate支持JPA规范)
我的问题是,Spring 是否会在其未来版本中支持标准规范 (CDI)?
【问题讨论】:
这有关系吗? cdisource.org/site/2011/06/spring-and-java-ee-6-cdi-get-it-done - 可能会有帮助 @kiro 确实是一个有用的链接,本文处理 Spring / CDI 集成,但不讨论 Spring(未来)对 CDI 的支持。我喜欢讨论 Spring 是否会支持 CDI,如果不支持,可能的(技术和其他)原因是什么。 Spring 已经支持 CDI 的javax.inject
注释,但我不确定 AOP 的东西。此外,CDI 远远超出了 DI(例如 facelets 集成)。你能说得更具体点吗?
@skaffman 在讨论这个话题时,请忽略超出 DI 和 AOP(在 Spring 和 CDI 中)的内容。
【参考方案1】:
尽管 Spring 是开源的,并且得到了一个大型社区的使用和支持,但它的未来发展由一家公司(spring 源/vmware)控制。因此,它的决定本质上是非公开的,并且肯定会受到许多因素的影响——比如社区当前的需求,当然还有财务和政治方面(归根结底,这一切都与钱有关)。
因此,重要的是得出结论,spring / spring 源不受任何官方流程(例如 JCP 会)的约束,并且无法预见未来 spring 源将决定什么。另一方面,过去的行为导致假设 spring 源不是 - cough - 特别对实现完整的 CDI 堆栈 (JSR 299) 感兴趣。请记住,尽管 spring 源最初加入了 JSR 299 的 JCP(与 sun、redhat、google 等一起),但他们都为此进行了一场可怕的斗争,最终导致了 JSR 330 的分叉,这不过是一个子集JSR 299 的。另外:在任何未来版本的 spring 中实现依赖注入的(有状态的)CDI 模型将是一项真正的工作。
所以,长话短说:尽管我们不知道未来,但可以肯定的是,spring/spring 源永远不会支持 JSR 299,而是坚持他们对 JSR 330 的实现.
【讨论】:
是的,正如 Jan Groth 上面所说的,将注入模型一分为二似乎确实是一个政治化的问题。我什至可以在最终批准投票 (jcp.org/en/jsr/results?id=5017) 中看到,IBM 投票反对这一举措并呼吁建立统一的模式。 拆分的原因可能是兼容性原因。 Spring DI 模型是一种遗留问题,即使在 2017 年,它们也不支持 CDI 的所有功能。以上是关于Spring 会支持 CDI 吗? [关闭]的主要内容,如果未能解决你的问题,请参考以下文章