gpt4 book ai didi

spring - CDI 是 Spring 的一个很好的替代品吗?

转载 作者:IT老高 更新时间:2023-10-28 13:01:43 25 4
gpt4 key购买 nike

我们计划从头开始编写一个 Web 应用程序,已决定使用符合 Java EE 6 标准的最新版 Glassfish,因此我们正在分析是否可以使用 CDI 来代替 Spring。

我们可以说 CDI 可以替代 Spring 吗?

最佳答案

2021 年更新:我回答最初的问题已经 10 年了,但我仍然偶尔获得支持。我能否请 future 的读者接受我的回答:2011 年 Java 企业版图的反射(reflect)。

CDI 代表“上下文和依赖注入(inject)”,而 Spring 是一个围绕依赖注入(inject)容器的完整生态系统。要比较两者,您必须区分比较。

依赖注入(inject)由两个容器处理。主要区别在于 CDI 以 动态(又名:有状态)方式处理 DI - 这意味着在执行时解决依赖关系。 Spring 的方法是静态 - 这意味着组件在创建时 连接在一起。虽然 CDI 方式乍一看可能有点不寻常,但它要优越得多,并提供更多和高级的选项(我写这篇文章的背景是两个高效的 CDI 应用程序)。

如果您查看 生态系统,情况就不同了:Spring 捆绑了 很多 jar (>150),而 CDI 本身非常小。典型的 CDI 用法是在 Java EE 6 应用服务器内部,但您可以轻松地使其在 servlet 引擎甚至 Java SE 中工作。这意味着使用 CDI 不会假设使用 Hibernate、JPA、EJB 或其他任何东西 - 这取决于您。

如果您需要更多功能,CDI 带有 可移植扩展 的概念(这本身就使 API 有值(value))。存在独立的扩展模块,如 Apache CODI 和 Seam 3,涵盖安全、邮件、报告等主题。

总结一下:CDI 并不是 Spring 生态系统的“替代品”,而是对 Spring 的依赖注入(inject)机制的改进。它是 Java EE 6 的一部分,因此如果您使用 Java EE 6 的 GlasFish,那么您绝对应该选择 CDI。在我看来,您的问题是:我可以用 Java EE 6 替换 Spring 吗?我想我的答案很明显;-)

看看Weld有个好的开始...

关于spring - CDI 是 Spring 的一个很好的替代品吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5973364/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com