Spring – Contenedores IoC

author
3 minutes, 25 seconds Read

El contenedor IoC de Spring es el núcleo de 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 la inyección de dependencia (DI) para gestionar los componentes que conforman una aplicación.

Spring proporciona los siguientes dos tipos de contenedores.

  1. Contenedor BeanFactory
  2. Contenedor ApplicationContext

Leer más: Inversión de Control e Inyección de Dependencias

BeanFactory

Una BeanFactory no es esencialmente más que la interfaz para una fábrica avanzada capaz de mantener un registro de diferentes beans y sus dependencias.

El BeanFactory nos permite leer las definiciones de los beans y acceder a ellos utilizando la fábrica de beans.

1.1. Cómo crear BeanFactory

Cuando se utiliza sólo el BeanFactory podemos crear uno y leer en algunas definiciones de bean en el formato XML de la siguiente manera:

Otras formas de crear bean factory son las siguientes:

Básicamente eso es todo lo que hay. Usando getBean(String), puedes recuperar instancias de tus beans; la vista del lado del cliente del BeanFactory es sorprendentemente simple.

1.2. Métodos de BeanFactory

La interfaz BeanFactory tiene sólo seis métodos para que el código cliente los llame:

  1. boolean containsBean(String): devuelve true si el BeanFactory contiene una definición de bean o una instancia de bean que coincide con el nombre dado
  2. Object getBean(String): devuelve una instancia del bean registrado bajo el nombre dado. Dependiendo de cómo se haya configurado el bean mediante la configuración BeanFactory, se devolverá una instancia singleton y, por tanto, compartida, o un bean recién creado. Se lanzará un BeansException cuando no se haya podido encontrar el bean (en cuyo caso será un NoSuchBeanDefinitionException), o se haya producido una excepción al instanciar y preparar el bean
  3. Object getBean(String, Class): devuelve un bean, registrado bajo el nombre dado. El bean devuelto será cast a la Clase dada. Si el bean no puede ser fundido, se lanzarán las excepciones correspondientes (BeanNotOfRequiredTypeException). Además, se aplican todas las reglas del método getBean(String) (ver arriba)
  4. Class getType(String name): devuelve el Class del bean con el nombre dado. Si no se ha podido encontrar ningún bean con el nombre dado, se lanzará un NoSuchBeanDefinitionException
  5. boolean isSingleton(String): determina si la definición del bean o la instancia del bean registrada bajo el nombre dado es o no un singleton. Si no se puede encontrar ningún bean correspondiente al nombre dado, se lanzará un NoSuchBeanDefinitionException
  6. String getAliases(String): Devuelve los alias para el nombre del bean dado, si se definió alguno en la definición del bean

ApplicationContext

El contenedor ApplicationContext 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 contenedor BeanFactory, por lo que generalmente se recomienda sobre el BeanFactory. BeanFactory Todavía se puede utilizar para aplicaciones ligeras como dispositivos móviles o aplicaciones basadas en applets donde el volumen de datos y la velocidad son significativos.

2.1. Tipos de ApplicationContext

Las implementaciones más utilizadas de ApplicationContext son:

  1. FileSystemXmlApplicationContext – Este contenedor carga las definiciones de los beans desde un fichero XML. Aquí es necesario proporcionar la ruta completa del archivo de configuración de beans XML al constructor.
  2. ClassPathXmlApplicationContext – Este contenedor carga las definiciones de los beans desde un archivo XML. Aquí no es necesario proporcionar la ruta completa del archivo XML, pero es necesario establecer CLASSPATH correctamente porque este contenedor buscará el archivo XML de configuración de beans en CLASSPATH.
  3. WebXmlApplicationContext – Este contenedor carga el archivo XML con las definiciones de todos los beans desde una aplicación web.

2.2. Cómo crear ApplicationContext

Un código de ejemplo para la instanciación del contexto de aplicación tendrá el siguiente aspecto.

Similar Posts

Deja una respuesta

Tu dirección de correo electrónico no será publicada.