inyeccion explicacion ejemplo dependencias control java dependency-injection cdi

explicacion - inyeccion de dependencias javascript



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

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 inyección de dependencia.


De la java.dzone.com/articles/resource-injection-vs :

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 inyección de dependencia 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 inyección de dependencia 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 inyección de dependencia no puede.

  2. La inyección de dependencia 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 inyección de dependencia es segura contra tipos, mientras que la inyección de resistencia no lo es.


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 compilador.

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.

java.dzone.com/articles/resource-injection-vs


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 en 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 utilizar).

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.