Java中的资源注入和dependency injection(CDI)有什么区别?

我一直在学习Java EE,并发现Java EE提供了两种类型的注入机制

  1. 资源注入
  2. dependency injection

请引导我理解资源注入和dependency injection之间的区别。

Java EE提供了注入机制,使我们的对象能够获得对资源和其他依赖项的引用,而无需直接实例化它们(显式地使用’new’关键字)。 我们通过绘制带有注释的字段或方法来简单地在类中声明所需的资源和其他依赖项,这些注释表示编译器的注入点。

然后容器在运行时提供所需的实例。 注入的优势在于它简化了我们的代码并将其与其依赖项的实现分离。

这两种方法都有助于实现控制反转。

看看我在这篇文章中写的一篇文章。

从来源 :

资源注入使您可以将JNDI名称空间中可用的任何资源注入任何容器管理的对象,例如servlet,企业bean或托管bean。 例如,我们可以使用资源注入来注入数据源,连接器或JNDI名称空间中可用的任何其他所需资源。

dependency injection使我们能够将常规Java类转换为托管对象,并将它们注入任何其他托管对象(由容器管理的对象)。

资源注入和dependency injection之间的区别RI和DI之间的差异如下所示。

  1. 资源注入可以直接注入JNDI资源,而dependency injection则不能。

  2. dependency injection可以直接注入Regular Classes(托管bean),而Resource Injection则不能。

  3. 资源注入按资源名称解析,而依赖项注入按类型解析。

  4. dependency injection是类型安全的,而Resoiurce Injection则不是。

Rahul Tripathi答案是准确而正确的答案。 但是用更简洁的方式来帮助你决定使用哪个让我们这样看:DI通常用于为接口分配实现类。 而RI用于提取属性值,以及来自JNDI的JDBC连接。 DI允许您针对接口编写代码,稍后决定使用哪种实现。 存在一些重叠,通常当RI’d对象不仅仅是属性值并且DI用于传递属性值时。 正如我已经提到的,这种重叠的一个很好的例子是JDBC连接。 JDBC连接不仅是连接字符串(属性值),它还是一个实现(要使用的驱动程序)。

我想如果您使用DI并且需要传递一些属性值,请继续使用DI。 如果你正在使用RI并且需要传递一个对象,那么如果可能的话,只需在RI中进行。 最终,如果你同时使用两者,那么需要填写更多的XML文件。

看看这个: Java EE Injection

资源注入和DI之间的主要区别 : 资源注入与资源的区别