spring中BeanFactory和ApplicationContext

BeanFactory是Spring框架最核心的接口,它提供了高級IoC的配置機制。BeanFactory使管理不同類型的Java對象稱爲可能。

ApplicationContext建立在BeanFactory基礎之上,提供更多面嚮應用的功能,它提供了國際化支持和框架事件體系,更易於創建實際應用。

我們一般稱BeanFactoryIoC容器,而稱ApplicationContext爲應用上下文。但有時爲了行爲方便,我們也將ApplicationContext稱爲Spring容器。

對於兩者的用途,我們可以進行簡單劃分:BeanFactorySpring框架的基礎設施,面向Spring本身;ApplicationContext面向使用Spring框架的開發者,幾乎所有的應用場合我們都直接使用ApplicationContext而非底層的BeanFactory

 

愚見:ApplicationContext間接BeanFactory,最大的區別是BeanFactory初始化時不會去實例化XML配置文件裏的bean,只有被調用是纔會去實例化該bean,對於singleton的bean來說,BeanFactory會緩存該實例。ApplicationContext在初始化時,會先實例化singleton的bean(spring的bean是否單例由scope屬性或singleton屬性決定,默認爲singleton,即單例,注意,是在該IOC容器內單例,classloader就不一樣了),當然可以通過XML配置文件中bean標籤的lazy-init屬性來指定該bean是否需要延遲加載,但有種特殊情況是,非懶加載的bean依賴與懶加載的bean是,懶加載功能就失效了。在web開發中,通常實用ApplicationContext來作爲容器,特別是WebApplicationContext

 

如有錯誤,請指正!

發佈了15 篇原創文章 · 獲贊 4 · 訪問量 7萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章