inyeccion injection dependency dependencias control arquitectura java spring oop design-patterns

java - injection - Diferencia entre la inversión de control y la inyección de dependencia



inyeccion de dependencias java spring (6)

COI significa "Inversión de Control". Funcionará según el principio de la COI, significa colaborar con los objetos y administrar los objetos del ciclo de vida. Colaborar significa que los objetos se agrupan en un solo lugar. Podemos colaborar con los objetos, son dos formas en que son la extracción de dependencia y la inyección de dependencia. DP se divide en dos formas (tirón de dependencia y tirón de dependencia contextual) y DI también se divide en dos maneras (inyección de Setter e inyección de constructor). IOC apoya ambas formas pero, la principal intención del trabajo con marcos de resortes es que nuestros componentes serán completamente flexibles. acoplado. Si utilizaremos la tracción de dependencia, nuestra clase de componentes se acoplará estrechamente con otra clase, aunque como parte del trabajo del marco de resorte. Luego, se recomienda la Inyección de dependencia (Inyección de Setter o Inyección de Constructor). No hay diferencia entre IOC y DI.IOC es diferente y DI es diferente, DI es una parte de IOC.

Esta pregunta ya tiene una respuesta aquí:

Los conceptos de IoC y DI fueron muy confusos para mí, así que leí muchas vistas y publicaciones de diferentes personas y finalmente llegué a la conclusión. Así que como entiendo estos temas son ...

La inversión de control es una técnica en java para realizar aplicaciones poco acopladas y más fáciles de mantener, y la inyección de dependencia es una de las formas de lograr este concepto (técnica).

La inversión del contenedor de control inyecta la dependencia en el tiempo de ejecución de las clases java para hacer una aplicación acoplada libremente.

Es esto cierto ? corrígeme si estoy equivocado...


Estos son patrones para lograr un acoplamiento suelto en la programación java.

DI (inyección de dependencia) :
La inyección de dependencia es un patrón utilizado para crear instancias de objetos en los que otros objetos dependen sin saber en el momento de la compilación qué clase se utilizará para proporcionar esa funcionalidad o simplemente la forma de inyectar propiedades a un objeto se llama inyección de dependencia.

Tenemos tres tipos de inyección de dependencia.

  1. Inyección Constructor
  2. Inyección Setter / Getter
  3. Inyección de interfaz

Spring solo admitirá Inyección Constructor y Inyección Setter / Getter.

IOC (Inversión de Control):
Dar control al contenedor para crear e inyectar instancias de objetos de los que depende su aplicación, significa que en lugar de que usted esté creando un objeto con el new operador, deje que el contenedor lo haga por usted. La inversión de control se basa en la inyección de dependencia porque se necesita un mecanismo para activar los componentes que proporcionan la funcionalidad específica

Los dos conceptos trabajan juntos de esta manera para permitir que se escriba código mucho más flexible, reutilizable y encapsulado. Como tales, son conceptos importantes en el diseño de soluciones orientadas a objetos.

Ejemplo para inyección de dependencia

Anteriormente estamos escribiendo código como este.

Public MyClass{ DependentClass dependentObject /* At somewhere in our code we need to instantiate the object with new operator inorder to use it or perform some method. */ dependentObject= new DependentClass(); dependentObject.someMethod(); }

Con la inyección de dependencia, el inyector de dependencia tomará la instanciación para nosotros

Public MyClass{ /* Dependency injector will instantiate object*/ DependentClass dependentObject /* At somewhere in our code we perform some method. The process of instantiation will be handled by the dependency injector */ dependentObject.someMethod(); }

El proceso anterior de dar el control a algún otro (por ejemplo, el contenedor) para la creación de instancias e inyección puede denominarse Inversión de control

Puede leer más sobre la inyección de dependencia y el COI en mi respuesta: - Puede encontrar ventajas y aplicaciones de los conceptos aquí.

¿Qué es la inyección de dependencia?


Inversión de control (IoC) se refiere a un estilo de programación donde un marco o tiempo de ejecución, controla el flujo del programa. La inversión de control significa que estamos cambiando el control de manera normal. Funciona en principio de inversión de dependencia.

DI es un patrón de diseño de software que nos permite desarrollar código acoplado libremente. DI es una excelente manera de reducir el acoplamiento apretado entre componentes de software. DI también nos permite administrar mejor los cambios futuros y otras complejidades en nuestro software. El propósito de DI es hacer que el código sea mantenible.


Inversión de control significa que el programa delega el control a otra persona que impulsará el flujo IOC (Inversión de control) es un término principal general, mientras que DI (inyección de dependencia) es un subconjunto de IOC. IOC es un concepto donde se invierte el flujo de aplicación. El control de la lógica que no es parte de esa entidad es tomado por otra persona. DI proporciona objetos que un objeto necesita. Así que en lugar de que las dependencias se construyan se inyectan. El mayor beneficio obtenido con el enfoque anterior es el "desacoplamiento", podemos invocar un objeto y pasar cualquier objeto manteniendo los objetos de manera independiente, lo que mejora la reutilización y el mantenimiento.


IoC es un término genérico que significa que, en lugar de hacer que la aplicación llame a los métodos en un marco, el marco llama a las implementaciones proporcionadas por la aplicación.

DI es una forma de IoC, donde las implementaciones se pasan a un objeto a través de constructores / definidores / búsquedas de servicio, de las cuales el objeto "dependerá" para que se comporte correctamente.

Referencia: Inversión de Control vs Inyección de Dependencia.


La inversión de control y la inyección de dependencia es un patrón de diseño central de Spring Framework. El patrón de diseño de IOC y DI también es una pregunta de entrevista de patrón de diseño popular en Java. Como su nombre sugiere Inversión del patrón de control Invierte la responsabilidad de administrar el ciclo de vida del objeto, por ejemplo, creando un objeto, configurando su dependencia, etc., de la aplicación a un marco, lo que facilita aún más la escritura de la aplicación Java.

Lea más: http://javarevisited.blogspot.com/2012/12/inversion-of-control-dependency-injection-design-pattern-spring-example-tutorial.html#ixzz4xve86pPN