首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >CDI (上下文和依赖注入)和DI (依赖注入)之间的区别是什么?

CDI (上下文和依赖注入)和DI (依赖注入)之间的区别是什么?
EN

Stack Overflow用户
提问于 2017-11-29 10:53:44
回答 2查看 2.4K关注 0票数 4

官方文件上说

代码语言:javascript
复制
The most fundamental services provided by CDI are as follows:
  • 上下文:将有状态组件的生命周期和交互绑定到定义良好但可扩展的生命周期上下文的能力。
  • 依赖注入:以类型错误的方式将组件注入应用程序的能力,包括在部署时选择要注入的特定接口的实现的能力。

但我还是不明白区别。例如,Spring是DI,我们仍然可以访问其中的上下文。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2017-11-29 11:50:26

CDI给了你更多的机会。并以不同的方式提供它,Spring试图更多地依赖于在编译时进行验证的可能性。但有时它看起来就像是头顶上的。例如,在一个非常小的项目中,来自JSF的EJB加上DI就足够了。但是您可以使用CDI,只有首先,与EJB的DI相比,值得更仔细地阅读CDI的主要优点。有许多小细节,你必须考虑在哪里使用它。

我把它从"https://javatalks.ru/topics/40299“中取下来,并为你翻译最接近的答案。我建议阅读以下文章:"https://blogs.oracle.com/enterprisetechtips/using-cdi-and-dependency-injection-for-java-in-a-jsf-20-application“--这是Oracle关于使用CDI和DI的好文章。

票数 2
EN

Stack Overflow用户

发布于 2020-06-09 13:32:12

阅读安东尼奥冈卡尔维斯的如何在Java 6中使用DI,给我们很好的理解。我将引述其中的一个重要部分:

这两个规范是互补的,不能在没有其他的情况下使用一个 依赖注入(又名@Inject) 定义了一组主要用于注入的注释(@Inject、@命名、@Provider、@限定符、@Scope和@Singleton)。如果下载这个JSR (实际上就是Javadoc)并阅读它,您会惊讶地发现没有定义语义(即注入行为不能跨实现移植)。这个规范在Spring 3 Guice中实现,也在Java 6中用CDI实现。您将在javax.inject包中找到DI注释。

最后

上下文和依赖项注入为JSR 330提供了语义,并添加了更多特性,如上下文管理、事件、修饰器和增强拦截器(AOP)。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/47551056

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档