BeanFactory & ApplicationContext

異同
  • 兩者都是通過xml配置文件加載bean,ApplicationContext繼承了BeanFacotry接口,而且還繼承了其他接口。所以ApplicationContext和BeanFacotry相比,提供了更多的擴展功能。
  • BeanFactory是延遲加載,如果Bean的某一個屬性沒有注入,BeanFacotry加載后,直至第一次使用調(diào)用getBean()才對該Bean進行加載實例化,這樣,我們就不能發(fā)現(xiàn)一些存在的Spring的配置問題。
  • 而ApplicationContext則相反,它是在容器啟動時,一次性創(chuàng)建了所有的Bean。這樣,在容器啟動時,我們就可以發(fā)現(xiàn)Spring中存在的配置錯誤。
在實際開發(fā)中用BeanFactory還是ApplicationContext ?
  • ApplicationContext包含了BeanFactory的所有功能。通常建議比BeanFactory優(yōu)先。

  • 如果你選擇BeanFactory則無法使用相當多的支持功能,如事務和AOP,這可能會導致混亂,因為配置并沒有錯誤。

  • 所以一般在開發(fā)中選擇使用ApplicationContext。

總結(jié)

  • BeanFactory當需要調(diào)用時才讀取配置信息,生成某個類的實例。如果讀入的Bean配置正確,則其他的配置中有錯誤也不會影響程序的運行。
  • ApplicationContext 在初始化時就把 xml 的配置信息讀入內(nèi)存,對 XML 文件進行檢驗,如果配置文件沒有錯誤,就創(chuàng)建所有的Bean ,直接為應用程序服務。相對于基本的BeanFactory,ApplicationContext 唯一的不足是占用內(nèi)存空間。當應用程序配置Bean較多時,程序啟動較慢。
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內(nèi)容

  • Spring Cloud為開發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)中一些常見模式的工具(例如配置管理,服務發(fā)現(xiàn),斷路器,智...
    卡卡羅2017閱讀 134,836評論 18 139
  • Spring Boot 參考指南 介紹 轉(zhuǎn)載自:https://www.gitbook.com/book/qbgb...
    毛宇鵬閱讀 46,925評論 6 342
  • 什么是Spring Spring是一個開源的Java EE開發(fā)框架。Spring框架的核心功能可以應用在任何Jav...
    jemmm閱讀 16,535評論 1 133
  • 那時的月亮 有雨的日子也透著些許的涼意,窗外的風把季節(jié)的過往肆意地渲染著,這城市的陌生,這五月的顏色,透明...
    胤小妖閱讀 383評論 0 2
  • 茉莉香片 年青的時候
    額皮卡堂閱讀 185評論 0 0