Spring - Contenedores de IoC
El contenedor Spring es el núcleo de Spring Framework. El contenedor creará los objetos, los conectará, configurará y administrará su ciclo de vida completo desde la creación hasta la destrucción. El contenedor Spring usa DI para administrar los componentes que componen una aplicación. Estos objetos se denominan 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 se pueden representar mediante XML, anotaciones Java o código Java. El siguiente diagrama representa una vista de alto nivel de cómo funciona Spring. El contenedor Spring IoC hace uso de clases de Java POJO y metadatos de configuración para producir un sistema o aplicación completamente configurados y ejecutables.
Spring proporciona los siguientes dos tipos distintos de contenedores.
No Señor. | Contenedor y descripción |
---|---|
1 | Contenedor Spring BeanFactory Este es el contenedor más simple que proporciona el soporte básico para DI y está definido por la interfaz org.springframework.beans.factory.BeanFactory . BeanFactory y las interfaces relacionadas, como BeanFactoryAware, InitializingBean, DisposableBean, todavía están presentes en Spring con el propósito de compatibilidad con versiones anteriores con una gran cantidad de frameworks de terceros que se integran con Spring. |
2 | Contenedor Spring ApplicationContext Este contenedor agrega una funcionalidad más específica de la empresa, como la capacidad de resolver mensajes de texto desde un archivo de propiedades y la capacidad de publicar eventos de aplicaciones para los oyentes de eventos interesados. Este contenedor está definido por la interfaz org.springframework.context.ApplicationContext . |
El contenedor ApplicationContext incluye toda la funcionalidad del contenedor BeanFactory , por lo que generalmente se recomienda en lugar de BeanFactory . BeanFactory aún se puede utilizar para aplicaciones ligeras como dispositivos móviles o aplicaciones basadas en subprogramas donde el volumen de datos y la velocidad son importantes.