No tienes acceso a esta clase

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

Inversión de control y el patrón de inyección de dependencias

7/31
Recursos

Aportes 20

Preguntas 3

Ordenar por:

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

¿Qué es inversión de control?

Ventajas

  • Desacoplamiento.
  • Segregación de interfaces.
  • Fácil testing.
  • Mayor modularidad.

¿Qué es inyección de dependencias?

Patrón que utiliza inversión de control para utilizar las dependencias inicializadas con el contenedor Spring.

Qué es un bean? Un bean básicamente son módulos desarrollados en Spring estos se encargan de brindarnos toda la lógica que necesitamos para nuestra aplicación. Ejemplo: Si necesitamos referenciar que nuestra clase es un modelo hacemos uso de el bean @entity . Esto nos permite usar propiedades creadas para este tipo de modulo que nos agilizan nuestro desarrollo. Al hacer inversión de control nosotros al llamar esos beans lo que hacemos es referenciar módulos funcionales creados por spring. Spring boot nos facilita el fácil instanciamiento de estos a nuestra aplicación, haciendo todo por nosotros…

Hay 3 formas de aplicar la inyeccion de dependencias:
-Por medio de atributo
-Por medio de metodos sets
-El mas famoso es por medio de constructor.

Por si alguien quiere profundizar más de este tema recomiendo este video donde se explica muy bien el concepto de inversión de control: https://www.youtube.com/watch?v=-Cs1HN6pEg4&list=PLU8oAlHdN5Blq85GIxtKjIXdfHPksV_Hm&index=6

Palabras muy complejas para cosas simples…

Falta simplificar un poco mas

Un Bean es una única instancia que se crea al inicio de la ejecución del programa y puede ser usada en otras clases llamándola con @Autowired (aquí le decimos “dependencia”), también se puede llamar en el constructor de la clase y el mismo framework hace la “magia” de ir por ella sin necesidad de nosotros pararle la instancia en el constructor cuando usemos la clase.

  • Inversion de control IoC
    • Se refiere a la transferencia del control del flujo de un programa a un contenedor o framework.
      • En un website o una app móvil el contenedor sería el usuario.
    • Ventajas
      • Facil testing por componentes o mocks de dependencias.
      • Mayor modularización.
      • Desacoplamiento cuando lo objetos cuentan con sus dependencias.
      • Segmentación de interfaces.
    • IoC en el contexto de spring boot
      • Los objetos que son administrados por el contenedor, spring boot los denomina beans. Un bean seria los objetos administrados por el usuario en un website.
      • Un bean es un objeto el cual es instanciado, ensamblado y administrado por el contenedor de spring IoC.
  • Patron de inyección de dependencias
    • Es el patrón que utiliza IoC para utilizar las dependencias anteriormente instanciadas por el contenedor de spring.

Quizás a alguien le sirva, a mi gusto resume bastante bien esta clase: https://es.quora.com/Qué-es-Spring-Beans

Este vídeo me ayudó a entender mejor la inversión de control y el patrón de inyección de dependencias:
https://www.youtube.com/watch?v=gGkeH38XMLk

Bean, es un objeto de la aplicación que es instanciado, ensamblado y administrado por un el contexto de Spring. Por ejemplo, si tienes una clase Java que representa a un usuario de tu aplicación, podrías marcarla como un bean de Spring Boot utilizando la anotación @Component. Esto permitiría a Spring Boot gestionar la instanciación y el ciclo de vida del objeto y, si es necesario, inyectar sus dependencias.

import org.springframework.stereotype.Component;

@Component
public class User {
  private String name;
  private String email;
  // Constructor, getters y setters
}

Una vez que has marcado una clase como un bean de Spring Boot, puedes utilizar la anotación @Autowired para inyectar el bean en otras clases donde sea necesario.

import org.springframework.beans.factory.annotation.Autowired;

public class UserService {
  @Autowired
  private User user;
  // Otros métodos y propiedades
}

“La inyección de dependencias es la implementación de Inversión de Control”

Pues si esta un poco complejo pero interesante para entender la aplicación que se le puede dar la orientación a objetos.

¿Que es inversión de control y qué es el patrón de inyección de dependencias?

Inversión de control es transferir el control de objetos de un programa a un framework o contenedor (ej.: usuario que interactúa con nuestra app). Las ventajas de la inversión de control es el desacople de toda nuestra lógica a nivel de clases, y dependencias. También facilita el testing.

Un Bean es una dependencia inicializada e instanciada por Spring.

La inyección de dependencias por su parte es el patrón de diseño que utiliza la IoC (Inversión de control).Ya que cada objeto cuenta con su propia implementación, con sus propias dependencias.

Los programadores los volvemos todo mas complejo para nada. Al final da igual el software más optimo o con los mejores patrones. siempre siempre siempre dará error XD

Comparto un pequeño resumen de la clase, por si a alguno le sirve:
.
Inversión de control y el patrón de inyección de dependencias
.
Inversión de control, a lo que se refiere es tranferir el control a un contenedor o un framework, el control del flujo del programa.
A diferencia con llevar un flujo de un programa tradicional, linea a linea digamos.
Cuando invertimos el control, le sacamos el control al flujo del programa y se lo damos al framework o el contenedor, un contenedor puede ser un usuario que utiliza o interactua con la aplicación Web, por ejemplo el usuario presiona un boton interactua con la aplicacion y esta realiza determinada tarea en base a esto.
.
Ventajas de inversion de control ( IoC )

  • Desacoplamos toda nuestra logica a nivel de clases u objetos es decir de Dependencias.

  • Ocultamos la implementacion de estas dependencias, por lo tanto logramos el beneficio de segregacion de interfaces.

  • Facilita el testing por componentes o mocks de dependencias.

  • Mayor modularidad de un programa.

  • Los objetos que son administrados por el contenedor Spring IoC se denominan beans.

  • Un bean es un objeto que es instanciado, ensamblado y administrado por un contenedor Spring IoC.
    .

¿Qué es inyección de dependencias?

.

  • Implementación del principio de inversión de control.

  • Definición de los otros objetos con los que trabajan.

  • Clases más faciles de probar, en particular cuando son interfaces

Este articulo me parece excelente para enteder lo que se ve en esta clase y posteriores
https://dev.to/cchacin/inyeccion-de-dependencias-en-java-44cg?signin=true

¿Qué es inyección de dependencias?
patrón de diseño orientado a objetos, su fin es el de suministrar objetos a una clase sin que la propia clase tenga que crearlos.

Yo lo conocía como Inversion de dependencias, nunca había escuchado que lo llamaran por Inversion de control. Tomo nota.

Siento que no fue claro, la verdad pudo haberlo explicado mejor