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.

Hay una serie de implementaciones de la interfaz BeanFactory que vienen directamente con Spring. La implementación de BeanFactory más utilizada es laXmlBeanFactoryclase. Este contenedor lee los metadatos de configuración de un archivo XML y los usa para crear un sistema o una aplicación completamente configurados.

Generalmente, se prefiere BeanFactory cuando los recursos son limitados, como dispositivos móviles o aplicaciones basadas en subprogramas. Por lo tanto, use un ApplicationContext a menos que tenga una buena razón para no hacerlo.

Ejemplo

Echemos un vistazo a un IDE de Eclipse que funcione y sigamos los siguientes pasos para crear una aplicación Spring:

Pasos Descripción
1 Cree un proyecto con un nombre SpringExample y cree un packagecom.tutorialspoint bajo elsrc carpeta en el proyecto creado.
2 Agregue las bibliotecas Spring requeridas utilizando la opción Agregar JAR externos como se explica en el capítulo Ejemplo de Spring Hello World.
3 Cree clases Java HelloWorld y MainApp en el paquete com.tutorialspoint .
4 Cree el archivo de configuración de Beans Beans.xml bajo elsrc carpeta.
5 El paso final es crear el contenido de todos los archivos Java y el archivo de configuración de Bean. Finalmente, ejecute la aplicación como se explica a continuación.

Aquí está el contenido de HelloWorld.java archivo -

package com.tutorialspoint;  

public class HelloWorld { 
   private String message;  
   
   public void setMessage(String message){ 
      this.message  = message; 
   }  
   public void getMessage(){ 
      System.out.println("Your Message : " + message); 
   } 
}

A continuación se muestra el contenido del segundo archivo MainApp.java

package com.tutorialspoint;  

import org.springframework.beans.factory.InitializingBean; 
import org.springframework.beans.factory.xml.XmlBeanFactory; 
import org.springframework.core.io.ClassPathResource;  

public class MainApp { 
   public static void main(String[] args) { 
      XmlBeanFactory factory = new XmlBeanFactory (new ClassPathResource("Beans.xml")); 
      HelloWorld obj = (HelloWorld) factory.getBean("helloWorld");    
      obj.getMessage();    
   }
}

Se deben tener en cuenta los siguientes dos puntos importantes sobre el programa principal:

  • El primer paso es crear un objeto de fábrica donde usamos el marco APIXmlBeanFactory () para crear el bean de fábrica y la API ClassPathResource () para cargar el archivo de configuración del bean disponible en CLASSPATH. La API XmlBeanFactory () se encarga de crear e inicializar todos los objetos, es decir, los beans mencionados en el archivo de configuración.

  • El segundo paso se usa para obtener el bean requerido usando el método getBean () del objeto de fábrica de beans creado. Este método utiliza el ID de bean para devolver un objeto genérico, que finalmente se puede convertir en el objeto real. Una vez que tenga el objeto, puede usar este objeto para llamar a cualquier método de clase.

A continuación se muestra el contenido del archivo de configuración del bean Beans.xml

<?xml version = "1.0" encoding = "UTF-8"?>

<beans xmlns = "http://www.springframework.org/schema/beans"
   xmlns:xsi = "http://www.w3.org/2001/XMLSchema-instance"
   xsi:schemaLocation = "http://www.springframework.org/schema/beans
   http://www.springframework.org/schema/beans/spring-beans-3.0.xsd">

   <bean id = "helloWorld" class = "com.tutorialspoint.HelloWorld">
      <property name = "message" value = "Hello World!"/>
   </bean>

</beans>

Una vez que haya terminado con la creación de la fuente y los archivos de configuración del bean, permítanos ejecutar la aplicación. Si todo está bien con su aplicación, imprimirá el siguiente mensaje:

Your Message : Hello World!