Contenitore Spring BeanFactory

Questo è il contenitore più semplice che fornisce il supporto di base per DI e definito dall'interfaccia org.springframework.beans.factory.BeanFactory. BeanFactory e le interfacce correlate, come BeanFactoryAware, InitializingBean, DisposableBean, sono ancora presenti in Spring ai fini della compatibilità con le versioni precedenti di un gran numero di framework di terze parti che si integrano con Spring.

Esistono numerose implementazioni dell'interfaccia BeanFactory che vengono fornite immediatamente con Spring. L'implementazione di BeanFactory più comunemente utilizzata èXmlBeanFactoryclasse. Questo contenitore legge i metadati di configurazione da un file XML e lo utilizza per creare un sistema o un'applicazione completamente configurati.

La BeanFactory è generalmente preferita dove le risorse sono limitate come dispositivi mobili o applicazioni basate su applet. Quindi, usa un ApplicationContext a meno che tu non abbia una buona ragione per non farlo.

Esempio

Diamo un'occhiata a un IDE Eclipse funzionante in atto e seguiamo i seguenti passaggi per creare un'applicazione Spring:

Passi Descrizione
1 Crea un progetto con un nome SpringExample e crea un packagecom.tutorialspoint sottosrc cartella nel progetto creato.
2 Aggiungere le librerie Spring richieste utilizzando l'opzione Aggiungi JAR esterni come spiegato nel capitolo Esempio Spring Hello World.
3 Crea classi Java HelloWorld e MainApp nel pacchetto com.tutorialspoint .
4 Crea il file di configurazione Beans Beans.xml sottosrc cartella.
5 Il passaggio finale consiste nel creare il contenuto di tutti i file Java e del file di configurazione Bean. Infine, esegui l'applicazione come spiegato di seguito.

Ecco il contenuto di HelloWorld.java file -

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); 
   } 
}

Di seguito è riportato il contenuto del secondo file 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();    
   }
}

Di seguito due punti importanti dovrebbero essere annotati sul programma principale:

  • Il primo passo è creare un oggetto factory in cui abbiamo utilizzato il framework APIXmlBeanFactory () per creare il bean factory e l'API ClassPathResource () per caricare il file di configurazione del bean disponibile in CLASSPATH. L'API XmlBeanFactory () si occupa di creare e inizializzare tutti gli oggetti, cioè i bean menzionati nel file di configurazione.

  • Il secondo passaggio viene utilizzato per ottenere il bean richiesto utilizzando il metodo getBean () dell'oggetto bean factory creato. Questo metodo utilizza l'ID bean per restituire un oggetto generico, che alla fine può essere sottoposto a cast all'oggetto reale. Una volta che hai l'oggetto, puoi usare questo oggetto per chiamare qualsiasi metodo di classe.

Di seguito è riportato il contenuto del file di configurazione 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 volta che hai finito con la creazione dei file sorgente e di configurazione del bean, eseguiamo l'applicazione. Se tutto va bene con la tua applicazione, stamperà il seguente messaggio:

Your Message : Hello World!