描述
BeanFactory:
是Spring里面最低層的接口,提供了最簡(jiǎn)單的容器的功能,只提供了實(shí)例化對(duì)象和拿對(duì)象的功能;
ApplicationContext:
應(yīng)用上下文,繼承BeanFactory接口,它是Spring的一各更高級(jí)的容器,提供了更多的有用的功能;
1) 國(guó)際化(MessageSource)
2) 訪問(wèn)資源,如URL和文件(ResourceLoader)
3) 載入多個(gè)(有繼承關(guān)系)上下文 ,使得每一個(gè)上下文都專注于一個(gè)特定的層次,比如應(yīng)用的web層 ?
4) 消息發(fā)送、響應(yīng)機(jī)制(ApplicationEventPublisher)
5) AOP(攔截器)
兩者裝載bean的區(qū)別
BeanFactory:
BeanFactory在啟動(dòng)的時(shí)候不會(huì)去實(shí)例化Bean,中有從容器中拿Bean的時(shí)候才會(huì)去實(shí)例化;
ApplicationContext:
ApplicationContext在啟動(dòng)的時(shí)候就把所有的Bean全部實(shí)例化了。它還可以為Bean配置lazy-init=true來(lái)讓Bean延遲實(shí)例化;?
我們?cè)撚肂eanFactory還是ApplicationContent
延遲實(shí)例化的優(yōu)點(diǎn):(BeanFactory)
應(yīng)用啟動(dòng)的時(shí)候占用資源很少;對(duì)資源要求較高的應(yīng)用,比較有優(yōu)勢(shì);?
不延遲實(shí)例化的優(yōu)點(diǎn): (ApplicationContext)
1. 所有的Bean在啟動(dòng)的時(shí)候都加載,系統(tǒng)運(yùn)行的速度快;?
2. 在啟動(dòng)的時(shí)候所有的Bean都加載了,我們就能在系統(tǒng)啟動(dòng)的時(shí)候,盡早的發(fā)現(xiàn)系統(tǒng)中的配置問(wèn)題?
3. 建議web應(yīng)用,在啟動(dòng)的時(shí)候就把所有的Bean都加載了。(把費(fèi)時(shí)的操作放到系統(tǒng)啟動(dòng)中完成)?