¿Cuál es la diferencia entre la inyección de recursos y la dependency injections (CDI) en Java?

He estado aprendiendo Java EE por un tiempo y descubrí que Java EE ofrece dos tipos de mecanismos de inyección

  1. Inyección de recursos
  2. Inyección de dependencia

Por favor guíeme para entender la diferencia entre la inyección de recursos y la dependency injection.

Java EE proporciona mecanismos de inyección que permiten que nuestros objetos obtengan las referencias a los recursos y otras dependencias sin tener que crear una instancia directamente (explícitamente con la palabra clave “nuevo”). Simplemente declaramos los recursos necesarios y otras dependencias en nuestras clases dibujando campos o métodos con anotaciones que denotan el punto de inyección al comstackdor.

El contenedor luego proporciona las instancias requeridas en tiempo de ejecución. La ventaja de la Inyección es que simplifica nuestro código y lo desacopla de las implementaciones de sus dependencias.

Ambos métodos facilitan el logro de la inversión de control.

Echa un vistazo a uno de mis artículos que escribí sobre esto.

De la fuente :

La inyección de recursos le permite inyectar cualquier recurso disponible en el espacio de nombres JNDI en cualquier objeto administrado por contenedor, como un servlet, un bean empresarial o un bean administrado. Por ejemplo, podemos usar la inyección de recursos para inyectar orígenes de datos, conectores o cualquier otro recurso deseado disponible en el espacio de nombres JNDI.

La dependency injection nos permite convertir las clases regulares de Java en objetos gestionados e inyectarlos en cualquier otro objeto gestionado (objetos que son gestionados por el contenedor).

Diferencia entre la inyección de recursos y la dependency injection Las diferencias entre RI y DI se enumeran a continuación.

  1. La inyección de recursos puede inyectar recursos JNDI directamente, mientras que la dependency injection no puede.

  2. La dependency injection puede inyectar clases regulares (bean administrado) directamente, mientras que la inyección de recursos no puede.

  3. La Inyección de recursos se resuelve por nombre de recurso, mientras que la Inyección de dependencia se resuelve por tipo.

  4. La dependency injection es segura contra tipos, mientras que la inyección de resistencia no lo es.

La respuesta de Rahul Tripathi es exacta y la correcta. Pero para ponerlo de una manera más sucinta que pueda ayudarlo a decidir cuál usar, véalo de esta manera: DI se usa generalmente para asignar clases de implementación a interfaces. Mientras que RI se utiliza para extraer valores de propiedades y conexiones JDBC de JNDI. DI le permite escribir código contra interfaces y decidir más adelante qué implementación usar. Existe cierta superposición, generalmente cuando los objetos de RI’d son más que solo un valor de propiedad y cuando la DI se utiliza para pasar un valor de propiedad. Un buen ejemplo de esta superposición, como ya mencioné, son las conexiones JDBC. Una conexión JDBC no es solo una cadena de conexión (valores de propiedad) sino que también es una implementación (qué controladores usar).

Creo que si está usando DI y necesita pasar algún valor de propiedad, simplemente continúe usando DI. Y si está usando RI y necesita pasar un objeto, entonces hágalo en RI si es posible. En última instancia, si utiliza ambos, entonces hay más archivos XML que deben completarse.

Mira esto: Inyección de Java EE

Principales diferencias entre la inyección de recursos y DI : Diferencia entre la inyección de recursos y