IoC容器負(fù)責(zé)實(shí)例化,配置和組裝對(duì)象。 IoC容器從XML文件獲取信息并相應(yīng)地工作。 IoC容器執(zhí)行的主要任務(wù)是:
實(shí)例化應(yīng)用程序類 配置對(duì)象 組裝對(duì)象之間的依賴關(guān)系
有兩種類型的IoC容器。它們是:
BeanFactory ApplicationContext
org.springframework.beans.factory。 BeanFactory 和org.springframework.context。 ApplicationContext 接口充當(dāng)IoC容器。 ApplicationContext接口建立在BeanFactory接口的頂部。它比BeanFactory增加了一些額外的功能,例如與Spring的AOP的簡(jiǎn)單集成,消息資源處理(用于I18N),事件傳播,Web應(yīng)用程序的特定于應(yīng)用程序?qū)拥纳舷挛?例如WebApplicationContext)。因此,使用ApplicationContext比使用BeanFactory更好。
XmlBeanFactory是BeanFactory接口的實(shí)現(xiàn)類。要使用BeanFactory,我們需要?jiǎng)?chuàng)建XmlBeanFactory類的實(shí)例,如下所示:
Resource resource=new ClassPathResource("applicationContext.xml"); BeanFactory factory=new XmlBeanFactory(resource);
XmlBeanFactory類的構(gòu)造函數(shù)接收Resource對(duì)象,因此我們需要傳遞該資源對(duì)象來(lái)創(chuàng)建BeanFactory對(duì)象。
使用ApplicationContext
ClassPathXmlApplicationContext類是ApplicationContext接口的實(shí)現(xiàn)類。我們需要實(shí)例化ClassPathXmlApplicationContext類以使用ApplicationContext,如下所示:
ApplicationContext context = new ClassPathXmlApplicationContext("applicationContext.xml");
ClassPathXmlApplicationContext類的構(gòu)造函數(shù)接收字符串,因此我們可以傳遞xml文件的名稱來(lái)創(chuàng)建ApplicationContext的實(shí)例。