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

¿Qué es la inversión de control y cómo se relaciona con la inyección de dependencias?
La inversión de control es un concepto clave en el desarrollo de software moderno que asigna el control de ejecuciones específicas a otro componente o framework. Imagínate que conduces un vehículo; tienes el control total del manejo. Pero, si el vehículo es autónomo, ya no decides cuándo acelerar o frenar. El control fue cedido. Traducido al lenguaje de programación, en las pruebas unitarias, es el framework quien decide cómo se ejecuta el servicio, lo cual es un ejemplo de inversión de control.
La inyección de dependencias es una técnica que viene a solucionar problemas relacionados con la inversión de control, liberando al objeto de la preocupación de cómo obtener sus dependencias. Así, un objeto puede trabajar con sus dependencias sin conocer cómo se instancian o resuelven.
¿Cómo se implementa la inyección de dependencias?
En el mundo del desarrollo de software, la inyección de dependencias se realiza de diversas formas, pero todas comparten un principio: las dependencias son proporcionadas desde fuera del objeto que las necesita.
flight repository pasado a través del constructor.public class FlightService { private final FlightRepository flightRepository; public FlightService(FlightRepository flightRepository) { this.flightRepository = flightRepository; } }
public class FlightService { private FlightRepository flightRepository; public void setFlightRepository(FlightRepository flightRepository) { this.flightRepository = flightRepository; } }
¿Por qué elegir la inyección de dependencias?
Existen varias razones poderosas para adoptar la inyección de dependencias en el desarrollo de software:
¿Cuál es el papel de los frameworks en la inyección de dependencias?
A pesar de que la inyección de dependencias puede ser implementada manualmente, existen frameworks que simplifican y automatizan el proceso. Frameworks como Spring en Java son populares por su habilidad para manejar la inyección de dependencias de manera eficiente, aliviando a los desarrolladores de la carga de instanciar y gestionar objetos, promoviendo un desarrollo más limpio y menos propenso a errores.
Tomar las riendas en entender e implementar inyección de dependencias reforzará tu habilidad para manejar proyectos de software cada vez más complejos. Entrégate al aprendizaje, experimenta las diversas técnicas y frameworks. ¡El dominio del código está a tu alcance!
La inversión de control es un concepto clave en el desarrollo de software moderno que asigna el control de ejecuciones específicas a otro componente o framework. Imagínate que conduces un vehículo; tienes el control total del manejo. Pero, si el vehículo es autónomo, ya no decides cuándo acelerar o frenar. El control fue cedido. Traducido al lenguaje de programación, en las pruebas unitarias, es el framework quien decide cómo se ejecuta el servicio, lo cual es un ejemplo de inversión de control.
La inyección de dependencias es una técnica que viene a solucionar problemas relacionados con la inversión de control, liberando al objeto de la preocupación de cómo obtener sus dependencias. Así, un objeto puede trabajar con sus dependencias sin conocer cómo se instancian o resuelven.
En el mundo del desarrollo de software, la inyección de dependencias se realiza de diversas formas, pero todas comparten un principio: las dependencias son proporcionadas desde fuera del objeto que las necesita.
flight repository pasado a través del constructor.public class FlightService {
private final FlightRepository flightRepository;
public FlightService(FlightRepository flightRepository) {
this.flightRepository = flightRepository;
}
}
public class FlightService {
private FlightRepository flightRepository;
public void setFlightRepository(FlightRepository flightRepository) {
this.flightRepository = flightRepository;
}
}
Existen varias razones poderosas para adoptar la inyección de dependencias en el desarrollo de software:
A pesar de que la inyección de dependencias puede ser implementada manualmente, existen frameworks que simplifican y automatizan el proceso. Frameworks como Spring en Java son populares por su habilidad para manejar la inyección de dependencias de manera eficiente, aliviando a los desarrolladores de la carga de instanciar y gestionar objetos, promoviendo un desarrollo más limpio y menos propenso a errores.
Tomar las riendas en entender e implementar inyección de dependencias reforzará tu habilidad para manejar proyectos de software cada vez más complejos. Entrégate al aprendizaje, experimenta las diversas técnicas y frameworks. ¡El dominio del código está a tu alcance!
Quiero hacer un aporte donde se explica claramente con un ejemplo el concepto de Inyección de Dependencias:

Un objeto o programa cede el control a alguien más.
Es una forma de implementar inversión de control. Es una técnica donde a un objeto le proveen las dependencias que necesita.
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.
Código java... NOOOO!
Creen que en un enfoque de POO los métodos heredados de la clase padre aunque pueda modificarse sus comportamientos en lo hijos “polimorfismo” puedan ser considerados como una inyección de dependencia?
Yo empecé hace poco a crear proyectos con arquitectura limpia, es muy útil en muchos sentidos.
Pero creo que es muy importante que para esta clase ya hayamos empezado a crear por nuestra propia cuenta un proyecto con arquitectura limpia, hacer esto me ayudó mucho a ver realmente qué significa cada cosa.
Y si tienen oportunidad de leer el libro de Arquitectura limpia del Tío Bob, sería genial, lo más importante son los capítulos precedentes al de arquitectura limpia, así que no se los salten.
Para los backend, siquieren un buen ejemplo de inyeccion de dependencias vayan al curso de nestjs
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.