Core Container (El corazón de Spring Framework)


El módulo Core Container es el componente más importante de Spring, ya que en este módulo, se encuentra todo lo referente a la configuración del contenedor IoC, parte indispensable para desarrollar con Spring Framework.

El módulo Core Container se divide en 4 submódulos, Bean, Core, Context, Expresión Languaje respectivamente.

El core Container se encarga de las siguientes tareas:

  • Crear e inyectar los bean
  • Leer archivos de configuración
  • Resolver dependencias
  • Uso del contexto para almacenar los bean.

En él se manejan varios conceptos que son base del desarrollo con Spring, tales como: inversión de control, inyección de dependencias, Contenedor IoC, vamos a revisar cada uno de ellos.

Contenido

Inversión de control

La inversión de control es un principio de software, donde el control del flujo de una aplicación se delega a un agente externo a la aplicación, por lo general esté agente externo suelen ser los Framework. Es decir, un agente externo (por ejemplo, Spring Framework), será quien tomé el control sobre el flujo de la aplicación.

Inversión de control en Spring

La inversión de control con Spring hace referencia a que Spring será ese agente externo que defina el flujo de actuación o el ciclo de vida de una petición. Es decir, Spring será quien ejecuta el código de la aplicación. 

En la imagen anterior, se aprecia como Spring tiene el control del flujo de la aplicación. Dicho en otras palabras, será Spring quien ejecute las operaciones sobre la aplicación y esta hará lo que Spring le solicita.

La inversión de control es solo un concepto como tal, una vez que logras comprenderlo, el siguiente paso es implementarlo. Hay distintas técnicas para aquello, tales como: localizador se servicio, inyección de dependencias, entre otras.

Spring Framework utiliza la técnica de inyección de dependencias para la implementar la inversión de control.

Inyección de dependencias (DI)

La inyección de dependencias (DI) es la técnica que utiliza Spring Framework para implementar la inversión de control. Está técnica consiste en proveer objetos(dependencias) a otros objetos, para que estos últimos puedan desarrollar sus funciones con normalidad.

Para implementar la DI, Spring utiliza un componente llamado Contenedor de inversión de control (Container IoC)  donde se almacenan todos los objetos de la aplicación, es en este contenedor, donde el concepto de inversión de control y la técnica de inyección de dependencias convergen.

Para comprender mejor la técnica de DI, vamos a ver detalles sobre el contenedor de IoC.

Contenedor de Spring IoC

El contenedor IoC o también llamado “Fabrica de bean”, es el componte de Spring que se encarga de crear e inyectar las dependencias(bean), por medio del proceso de inversión de control.

Es aquí donde se construyen los objetos de las clases Java, el contenedor IoC es quien decide que objetos (bean en Spring) va a instanciar de acuerdo con los metadatos de configuración.


La imagen anterior describe el trabajo del Contenedor IoC a la hora de crear los bean de la aplicación, si te fijas el Contenedor IoC consume los metadatos de configuración y las clases de Java para producir los bean.

Veamos el siguiente ejemplo.

Tenemos dos clases Java, Esfero y Tinta respectivamente, donde la clase Esfero requiere de un objeto(dependencia) de tipo Tinta, que se le va a proveer a través del constructor.


Como se aprecia en la imagen, el Contenedor IoC es quien crea los objetos (esfero y tinta), además de eso, el propio contenedor es quien provee(inyecta) el bean tinta hacia el bean esfero (esto es como tal la inversión del control).

Aquí podemos ver como el control sobre la creación y configuración de los objetos(bean) ha sido delegado a Spring, es Spring quien decide que objetos crear y como configurarlos.

Para que el Contenedor IoC pueda crear e inyectar los bean, se le debe suministrar metadatos de configuración. Estos metadatos de configuración le dicen al contenedor Spring que cree instancias, configure y ensamble los objetos en su aplicación, pero este tema se revisará en la siguiente entrada.

En la siguiente entrada implementaremos el Contenedor IoC, además, revisaremos las opciones que tenemos para definir los metadatos de configuración.

¡Nos vemos pronto ✋👍!


Comentarios

Entradas populares de este blog

JWT (Json Web Token)

Instalar Java Developmet Kit(JDK)

Curso de Spring