Core Container (El corazón de 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
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.
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
Publicar un comentario