回覆列表
  • 1 # 科學史話

    兩者的大概背景 BeanFactory:  BeanFactory是spring中比較原始,比較古老的Factory。因為比較古老,所以BeanFactory無法支援spring外掛,例如:AOP、Web應用等功能。

    ApplicationContext  ApplicationContext是BeanFactory的子類,因為古老的BeanFactory無法滿足不斷更新的spring的需求,於是ApplicationContext就基本上代替了BeanFactory的工作,以一種更面向框架的工作方式以及對上下文進行分層和實現繼承,並在這個基礎上對功能進行擴充套件: <1>MessageSource, 提供國際化的訊息訪問 <2>資源訪問(如URL和檔案) <3>事件傳遞 <4>Bean的自動裝配 <5>各種不同應用層的Context實現

    2. 利用BeanFactory獲取bean

     重點:當我們使用BeanFactory去獲取Bean的時候,我們只是例項化了該容器,而該容器中的bean並沒有被例項化。當我們getBean的時候,才會實時例項化該bean物件。

    3. 利用ApplicationContext獲取bean

     重點:當我們使用ApplicationContext去獲取bean的時候,在載入XXX.xml的時候,會建立所有的配置bean。

    4. 三種獲取ApplicationContext物件引用的方法

    5. 區別總結 <1>如果使用ApplicationContext,如果配置的bean是singleton,那麼不管你有沒有或想不想用它,它都會被例項化。好處是可以預先載入,壞處是浪費記憶體。 <2>BeanFactory,當使用BeanFactory例項化物件時,配置的bean不會馬上被例項化,而是等到你使用該bean的時候(getBean)才會被例項化。好處是節約記憶體,壞處是速度比較慢。多用於移動裝置的開發。 <3>沒有特殊要求的情況下,應該使用ApplicationContext完成。因為BeanFactory能完成的事情,ApplicationContext都能完成,並且提供了更多接近現在開發的功能。

  • 中秋節和大豐收的關聯?
  • 伊比利亞火腿發黴了還能吃嗎?