El contenedor Spring es el núcleo del Spring Framework. El contenedor creará los objetos, los conectará, los configurará y gestionará su ciclo de vida completo desde la creación hasta la destrucción. El contenedor de Spring utiliza DI para gestionar los componentes que conforman una aplicación. Estos objetos se llaman Spring Beans, de los que hablaremos en el próximo capítulo.
El contenedor obtiene sus instrucciones sobre qué objetos instanciar, configurar y ensamblar leyendo los metadatos de configuración proporcionados. Los metadatos de configuración pueden representarse mediante XML, anotaciones Java o código Java. El siguiente diagrama representa una vista de alto nivel de cómo funciona Spring. El contenedor IoC de Spring hace uso de las clases POJO de Java y de los metadatos de configuración para producir un sistema o aplicación totalmente configurado y ejecutable.
Spring proporciona los siguientes dos tipos distintos de contenedores.
Sr.No. | Contenedor & Descripción | 1 | Contenedor Spring BeanFactory
Este es el contenedor más sencillo que proporciona el soporte básico para DI y está definido por la interfaz org.springframework.beans.factory.BeanFactory. El BeanFactory y las interfaces relacionadas, como BeanFactoryAware, InitializingBean, DisposableBean, siguen presentes en Spring con el propósito de la compatibilidad hacia atrás con un gran número de frameworks de terceros que se integran con Spring. |
---|---|
2 | Contenedor Spring ApplicationContext
Este contenedor añade más funcionalidades específicas de la empresa como la capacidad de resolver mensajes textuales desde un fichero de propiedades y la capacidad de publicar eventos de la aplicación a los oyentes de eventos interesados. Este contenedor está definido por la interfaz org.springframework.context.ApplicationContext. |
El contenedor ApplicationContext incluye toda la funcionalidad del BeanFactorycontainer, por lo que generalmente se recomienda sobre BeanFactory. BeanFactory puede seguir utilizándose para aplicaciones ligeras como dispositivos móviles o aplicaciones basadas en applets en las que el volumen de datos y la velocidad son importantes.