No tienes acceso a esta clase

¡Continúa aprendiendo! Únete y comienza a potenciar tu carrera

Inyección de dependencias

13/24
Recursos

Aportes 19

Preguntas 1

Ordenar por:

¿Quieres ver más aportes, preguntas y respuestas de la comunidad?

Quiero hacer un aporte donde se explica claramente con un ejemplo el concepto de Inyección de Dependencias:

Inyección de dependencias

Inversión de Control (IoC)

Un objeto o programa cede el control a alguien más.

Inyección de Dependencias (DI)

Es una forma de implementar inversión de control. Es una técnica donde a un objeto le proveen las dependencias que necesita.

Formas de hacer inyección de depencias

  • Por constructor.
  • Por setter.
  • Por método.
  • Por interfaz.

La Inyección de Dependencias (Dependency Injection, DI) y la Inversión de Control (Inversion of Control, IoC) son dos conceptos relacionados que se utilizan en el desarrollo de software para mejorar la modularidad, la flexibilidad y la mantenibilidad de una aplicación.
.
La Inversión de Control (IoC) es un principio de diseño que busca invertir el control de la ejecución de un programa. En lugar de que un componente de software controle y gestione directamente sus dependencias y recursos, el control se delega a un contenedor o framework que maneja la creación y la resolución de dependencias. El componente simplemente declara las dependencias que necesita y el contenedor las provee.
.
La Inyección de Dependencias (DI) es una técnica específica que se utiliza para implementar la Inversión de Control. En la DI, las dependencias de un componente son inyectadas en él en tiempo de ejecución, en lugar de ser creadas o gestionadas directamente por el propio componente. Esto se logra definiendo interfaces o clases abstractas para las dependencias, y luego configurando un contenedor o un framework para que resuelva e inyecte las implementaciones concretas en el componente.

No me está quedando claro lo que explica el docente. Me parece que utiliza palabras muy enredadas.

No estaba conciente del tema de la inyección si no hasta hace algunos meses que comencé a desarrollar en golang, muy interesante conocer los métodos ya que si lo he implementado más no conocía a detalle el concepto, y veo que hay más formas de hacerlo, interesante creare un repo para aprender a implementarlos de las diferentes formas.

En lo personal, lo uso mucho en .NET 6,7 lo uso siempre, para .NET Framework he usado AutoFac para registar y resolver la dependencias a lo largo de la aplicación. La forma que he usado para inyectar ha sido por medio de constructor.

Antes he usado la inyección de dependencias, inicialmente la aprendí en spring boot con la anotación @Autowired (la cual entiendo que implica que el servicio sea un objeto pojo - getters, setters y constructor vacío), sin embargo, me parece que se ve un poco más limpia la inyección por constructor.
en el caso de .net la practica habitual en mi es poder crear una interfaz con una serie de metodos, luego los implemento en una clase donde coloco todoa la logica del corresponde a ese metodo y posteriormente para compartilo en todo el programa ... en un lugar generico el program inyecto la interfaz y la clase donde se implmenta posteriormete esa inyeccion puede ser usada desde el controlador o en cualquier otro lugar de la aplicacion
Eh Utilizado la inyección de dependencias por medio del framework de Spring Boot
La inyección de dependencia ("Dependency Injection" o "DI") es un patrón de diseño utilizado principalmente en programación orientada a objetos para lograr la inversión de control y mejorar la modularidad y la capacidad de prueba de un software. En términos simples, la inyección de dependencia se refiere a la técnica de suministrar a un objeto sus dependencias (objetos o valores que necesita para funcionar) desde el exterior, en lugar de que el objeto las cree por sí mismo. Esto tiene varias ventajas: 1. **Desacoplamiento**: La inyección de dependencia permite que los componentes de un sistema estén menos acoplados entre sí. Un objeto no necesita saber cómo crear sus dependencias; simplemente las recibe. 2. **Reutilización**: Los componentes se vuelven más reutilizables porque no están fuertemente acoplados a sus dependencias. Puedes cambiar las implementaciones de las dependencias sin tener que modificar el componente que las utiliza. 3. **Testabilidad**: Facilita las pruebas unitarias, ya que puedes inyectar objetos simulados o mock (imitaciones) en lugar de los objetos reales. Esto permite probar unidades individuales de código sin depender de implementaciones concretas de sus dependencias.
Muy buena explicación de los conceptos de inversión de control y de inyección de dependencias. Llegue a utilizar estas técnicas antes de saber la utilidad o de conocer mejor su definición porque, en mis primeros trabajos, me toco hacer uso de frameworks construidos de manera interna que implementaban mucho de lo visto en el video.
Carai, jamás había entendido con tanta claridad lo que es la inyección de dependencias. Alto crack!

He utilizado principalmente la inyección de dependencias en el ecosistema Java, tanto con Spring como con el stack JEE desde la versión 6.

Ya había visto este vídeo antes para la investigación de mi tesis, luego que desarrollé un prototipo aplicando patrones de arquitectura y esta técnica, regreso para terminar el curso y ya lo veo más claramente.

Actualmente estoy estudiando sobre el framework de Spring

La inyección de dependencias la he estado implementando más últimamente porque nos permite desacoplarnos (dejar de depender de otros componentes) de libraries de terceros. La hemos realizado manualmente armando todo desde el lugar donde se implementan las cosas (en un controller o resolver). He usado typedi como contenedor de dependencias pero hasta ahora no he notado que aporte demasiado tener un contenedor, quizás porque las apps no son gigantes.

Dato curioso: empezamos a ver mejores formas de hacer las cosas porque nos acoplamos muuucho a la autogeneración de código de Prisma 1… y después ya no nos pudimos separar de esa versión específica, y ahora el proyecto ya no se puede actualizar porque Prisma 1 está deprecado y no le dan mantenimiento

En Node.js he utilizado la librería InversifyJS, el cual es un contenedor de inversión de control que usa el constructor de una clase para identificar e inyectar las dependencias.

Si la hemos utilizado pero ya dentro de .Net Core esta nueva funcionalidad la tenemos de base con lo cual es muy sencillo de implementar.