Il contenitore IoC è responsabile di istanziare, configurare e assemblare gli oggetti. Il contenitore IoC ottiene informazioni dal file XML e funziona di conseguenza. I compiti principali svolti dal contenitore IoC sono:
- per istanziare la classe dell'applicazione
- per configurare l'oggetto
- per assemblare le dipendenze tra gli oggetti
Esistono due tipi di contenitori IoC. Sono:
Differenza tra BeanFactory e ApplicationContext
Il file org.springframework.beans.factory. Fabbrica di fagioli e org.springframework.context. Contesto dell'applicazione le interfacce fungono da contenitore IoC. L'interfaccia ApplicationContext è costruita sopra l'interfaccia BeanFactory. Aggiunge alcune funzionalità extra rispetto a BeanFactory come la semplice integrazione con AOP di Spring, gestione delle risorse dei messaggi (per I18N), propagazione degli eventi, contesto specifico del livello dell'applicazione (ad esempio WebApplicationContext) per l'applicazione web. Quindi è meglio usare ApplicationContext piuttosto che BeanFactory.
Utilizzando BeanFactory
XmlBeanFactory è la classe di implementazione per l'interfaccia BeanFactory. Per utilizzare BeanFactory, dobbiamo creare l'istanza della classe XmlBeanFactory come indicato di seguito:
Resource resource=new ClassPathResource('applicationContext.xml'); BeanFactory factory=new XmlBeanFactory(resource);
Il costruttore della classe XmlBeanFactory riceve l'oggetto Resource quindi dobbiamo passare l'oggetto Resource per creare l'oggetto di BeanFactory.
Utilizzando ApplicationContext
La classe ClassPathXmlApplicationContext è la classe di implementazione dell'interfaccia ApplicationContext. Dobbiamo istanziare la classe ClassPathXmlApplicationContext per utilizzare ApplicationContext come indicato di seguito:
ApplicationContext context = new ClassPathXmlApplicationContext('applicationContext.xml');
Il costruttore della classe ClassPathXmlApplicationContext riceve la stringa, quindi possiamo passare il nome del file xml per creare l'istanza di ApplicationContext.
scarica l'esempio per utilizzare ApplicationContext