官方文件上说
The most fundamental services provided by CDI are as follows:但我还是不明白区别。例如,Spring是DI,我们仍然可以访问其中的上下文。
发布于 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的好文章。
发布于 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)。
https://stackoverflow.com/questions/47551056
复制相似问题