004 IOC---IOC容器
一.概述
在上一節(jié)之中,我們說(shuō)到了IOC容器,并且說(shuō)到了BeanFactory.
現(xiàn)在我們來(lái)看一下BeanFactory的定義.
我們可以看到BeanFactory定義的方法,核心的方法就是getBean()方法.
也就是說(shuō),spring封裝了創(chuàng)建Bean的全部過(guò)程,用戶只需要getBean()就可以了.
那么,之前我們也說(shuō)到了spring通過(guò)配置信息知道用戶需要?jiǎng)?chuàng)建什么樣的Bean,那么我們后面的一個(gè)核心就是學(xué)會(huì)配置.
?
二 .ApplicationContext
Beanfactory實(shí)際上定義了IOC容器的基本形式,對(duì)于程序員來(lái)說(shuō),一般情況下是不會(huì)使用BeanFactory這樣底層的容器的.
spring為我們提供了ApplicationContext,含義是應(yīng)用上下文.
上下文在編程中一般的含義就是包含當(dāng)前運(yùn)行信息的環(huán)境.因此,我們一般也將ApplicaitonContext視為IOC容器.
public interface ApplicationContext extends EnvironmentCapable, ListableBeanFactory, HierarchicalBeanFactory,MessageSource, ApplicationEventPublisher, ResourcePatternResolver {上面是ApplicationContext的定義,我們看到其實(shí)際上繼承了BeanFactory,同時(shí)還繼承了其它的接口.
如 MessageSource,ApplicationEventPublisher等接口,也就是說(shuō)ApplicaitonContext具有了國(guó)際化和事件的能力,這些都是后面我們需要說(shuō)的.
做為程序員,我們經(jīng)常使用的都是該接口的子類:
如:
ClassPathXmlApplicationContext //從類路徑下加載配置信息FileSystemXmlApplicationContext //從文件系統(tǒng)加載配置信息
AnnotationConfigApplicationContext // 注解式環(huán)境
我們看到,子類只是獲取配置信息的方式不同,同時(shí)還提供了環(huán)境下一些特殊行為.
?
三 .BeanFactory和ApplicaitonContext
這是一個(gè)老生常談的問(wèn)題,首先
[1]BeanFacoty是IOC的頂層接口,定義了IOC容器的一般行為.
[2]ApplicationContext繼承了BeanFactory,同時(shí)繼承了其它的接口,如時(shí)間,國(guó)際化等接口,也就是說(shuō)擁有的能力比BeanFactory更強(qiáng).
[3]BeanFactory是spring底層使用的,ApplicaitonContext才是程序員應(yīng)該使用的接口.
[4]加載時(shí)機(jī)的問(wèn)題,ApplicaitonContext會(huì)初始化所有的單例Bean,這個(gè)問(wèn)題我們后面會(huì)重點(diǎn)說(shuō)明.
轉(zhuǎn)載于:https://www.cnblogs.com/trekxu/p/9090674.html
總結(jié)
以上是生活随笔為你收集整理的004 IOC---IOC容器的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: Mysqldump逻辑备份与恢复
- 下一篇: 开发工程中遇到的BUG