久久国产成人av_抖音国产毛片_a片网站免费观看_A片无码播放手机在线观看,色五月在线观看,亚洲精品m在线观看,女人自慰的免费网址,悠悠在线观看精品视频,一级日本片免费的,亚洲精品久,国产精品成人久久久久久久

分享

Spring中ApplicationContext和beanfactory區(qū)別

 land_zhj 2018-03-06
BeanFacotry是spring中比較原始的Factory,。如XMLBeanFactory就是一種典型的BeanFactory。原始的BeanFactory無(wú)法支持spring的許多插件,,如AOP功能,、Web應(yīng)用等。 
  ApplicationContext接口,它由BeanFactory接口派生而來(lái),,因而提供BeanFactory所有的功能,。ApplicationContext以一種更向面向框架的方式工作以及對(duì)上下文進(jìn)行分層和實(shí)現(xiàn)繼承,ApplicationContext包還提供了以下的功能: 
  · MessageSource, 提供國(guó)際化的消息訪問(wèn) 
  · 資源訪問(wèn),,如URL和文件 
  · 事件傳播 
  · 載入多個(gè)(有繼承關(guān)系)上下文 ,,使得每一個(gè)上下文都專注于一個(gè)特定的層次,比如應(yīng)用的web層 
1.利用MessageSource進(jìn)行國(guó)際化 
  BeanFactory是不支持國(guó)際化功能的,,因?yàn)锽eanFactory沒(méi)有擴(kuò)展Spring中MessageResource接口,。相反,由于ApplicationContext擴(kuò)展了MessageResource接口,因而具有消息處理的能力(i18N),,具體spring如何使用國(guó)際化,,以后章節(jié)會(huì)詳細(xì)描述。 

2.強(qiáng)大的事件機(jī)制(Event) 
  基本上牽涉到事件(Event)方面的設(shè)計(jì),,就離不開(kāi)觀察者模式,。不明白觀察者模式的朋友,最好上網(wǎng)了解下,。因?yàn)?,這種模式在java開(kāi)發(fā)中是比較常用的,又是比較重要的,。 
ApplicationContext的事件機(jī)制主要通過(guò)ApplicationEvent和ApplicationListener這兩個(gè)接口來(lái)提供的,,和java swing中的事件機(jī)制一樣。即當(dāng)ApplicationContext中發(fā)布一個(gè)事件的時(shí),,所有擴(kuò)展了ApplicationListener的Bean都將會(huì)接受到這個(gè)事件,,并進(jìn)行相應(yīng)的處理。 

Spring提供了部分內(nèi)置事件,,主要有以下幾種: 
ContextRefreshedEvent :ApplicationContext發(fā)送該事件時(shí),,表示該容器中所有的Bean都已經(jīng)被裝載完成,此ApplicationContext已就緒可用 
ContextStartedEvent:生命周期 beans的啟動(dòng)信號(hào) 
ContextStoppedEvent: 生命周期 beans的停止信號(hào) 
ContextClosedEvent:ApplicationContext關(guān)閉事件,,則context不能刷新和重啟,,從而所有的singleton bean全部銷毀(因?yàn)閟ingleton bean是存在容器緩存中的) 

  雖然,spring提供了許多內(nèi)置事件,,但用戶也可根據(jù)自己需要來(lái)擴(kuò)展spriong中的事物,。注意,要擴(kuò)展的事件都要實(shí)現(xiàn)ApplicationEvent接口,。 

3.底層資源的訪問(wèn) 
  ApplicationContext擴(kuò)展了ResourceLoader(資源加載器)接口,,從而可以用來(lái)加載多個(gè)Resource,而B(niǎo)eanFactory是沒(méi)有擴(kuò)展ResourceLoader 

4.對(duì)Web應(yīng)用的支持 
  與BeanFactory通常以編程的方式被創(chuàng)建不同的是,,ApplicationContext能以聲明的方式創(chuàng)建,,如使用ContextLoader。當(dāng)然你也可以使用ApplicationContext的實(shí)現(xiàn)之一來(lái)以編程的方式創(chuàng)建ApplicationContext實(shí)例 ,。 
 

ContextLoader有兩個(gè)實(shí)現(xiàn):ContextLoaderListenerContextLoaderServlet,。它們兩個(gè)有著同樣的功能,除了listener不能在Servlet 2.2兼容的容器中使用,。自從Servelt 2.4規(guī)范,,listener被要求在web應(yīng)用啟動(dòng)后初始化。很多2.3兼容的容器已經(jīng)實(shí)現(xiàn)了這個(gè)特性,。使用哪一個(gè)取決于你自己,,但是如果所有的條件都一樣,,你大概會(huì)更喜歡ContextLoaderListener;關(guān)于兼容方面的更多信息可以參照ContextLoaderServlet的JavaDoc,。

這個(gè)listener需要檢查contextConfigLocation參數(shù),。如果不存在的話,它將默認(rèn)使用/WEB-INF/applicationContext.xml,。如果它存在,,它就會(huì)用預(yù)先定義的分隔符(逗號(hào),分號(hào)和空格)分開(kāi)分割字符串,,并將這些值作為應(yīng)用上下文將要搜索的位置,。ContextLoaderServlet可以用來(lái)替換ContextLoaderListener。這個(gè)servlet像listener那樣使用contextConfigLocation參數(shù),。


5.其它區(qū)別 
  1).BeanFactroy采用的是延遲加載形式來(lái)注入Bean的,,即只有在使用到某個(gè)Bean時(shí)(調(diào)用getBean()),才對(duì)該Bean進(jìn)行加載實(shí)例化,,這樣,,我們就不能發(fā)現(xiàn)一些存在的Spring的配置問(wèn)題。而ApplicationContext則相反,,它是在容器啟動(dòng)時(shí),,一次性創(chuàng)建了所有的Bean。這樣,,在容器啟動(dòng)時(shí),,我們就可以發(fā)現(xiàn)Spring中存在的配置錯(cuò)誤。 

  2).BeanFactory和ApplicationContext都支持BeanPostProcessor,、BeanFactoryPostProcessor的使用,,但兩者之間的區(qū)別是:BeanFactory需要手動(dòng)注冊(cè),而ApplicationContext則是自動(dòng)注冊(cè)

    本站是提供個(gè)人知識(shí)管理的網(wǎng)絡(luò)存儲(chǔ)空間,,所有內(nèi)容均由用戶發(fā)布,,不代表本站觀點(diǎn)。請(qǐng)注意甄別內(nèi)容中的聯(lián)系方式,、誘導(dǎo)購(gòu)買等信息,謹(jǐn)防詐騙,。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,,請(qǐng)點(diǎn)擊一鍵舉報(bào)。
    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評(píng)論

    發(fā)表

    請(qǐng)遵守用戶 評(píng)論公約

    類似文章 更多