當前位置:
首頁 > 最新 > Spring中BeanFactory和ApplicationContext 的區別

Spring中BeanFactory和ApplicationContext 的區別

作者:[Zoltan Raffai]

譯者:FraserYu

我看到很多問題詢問 BeanFactory 和 ApplicationContext 之間的區別。伴隨而來,我有一個問題:我應該使用前者還是後者來從 Spring 容器中獲取 beans。

我們之前 在這裡 討論過 Spring 容器。 基本上這兩個介面提供從容器中獲取 Spring beans 的方式, 但是有一些明顯的差異。

讓我們看一看!


這是一個非常簡單,通常又很複雜的問題。通常情況,Spring beans 是被 Spring 容器管理的 Java 對象.

這裡是一個簡單的 Spring bean 示例:

在基於 XML 的配置中,beans.xml為Spring 容器管理 bean 提供了原數據。


Spring 容器負責實例化,配置,裝配 Spring beans。 這裡是一個如何為控制反轉容器配置 HelloWorld POJO 的示例

現在它被 Spring 容器管理, 問題是: 我們如何訪問它?


這是個訪問 Spring 容器的根介面。 為訪問 Spring 容器,我們將使用 Spring 的依賴注入功能使用這個 BeanFactory 介面和它的子介面。

功能:

Bean 實例化/關聯

通常,它的實現是懶載入方式,這意味著當我們直接通過調用 方法時 bean 才會實例化。

最常使用的實現BeanFactory的 API 是XmlBeanFactory.

這裡是一個如何通過 BeanFactory 獲取一個 bean 的示例:


在 Spring 應用中,ApplicationContext是中心介面,用於為應用提供配置信息。

它實現 BeanFactory 介面,因此,ApplicationContext 包含 BeanFactory的所有功能,甚至更多!它的主要功能是大業務應用的創建。

功能:

Bean 實例化/關聯

自動的 BeanPostProcessor 註冊

自動的 BeanFactoryPostProcessor 註冊

方便的 MessageSource 訪問(i18n)

應用事件發布

它使用預載入方式,所以 ApplicationContext 啟動後會實例化每個 bean。

這裡是ApplicationContext使用示例:


ApplicationContext包含BeanFactory的所有功能。通常推薦使用前者,有一些限制情形,比如在移動應用中,對內存消費比較嚴苛。在那些情形中將會合理的使用更輕量級的BeanFactory。 然而, 在大多數企業應用中,ApplicationContext將會是你想使用的。

本文由spring4all.com翻譯小分隊創作,採用 知識共享-署名-非商業性使用-相同方式共享 4.0 國際 許可 協議進行許可。


喜歡這篇文章嗎?立刻分享出去讓更多人知道吧!

本站內容充實豐富,博大精深,小編精選每日熱門資訊,隨時更新,點擊「搶先收到最新資訊」瀏覽吧!


請您繼續閱讀更多來自 SpringForAll社區 的精彩文章:

譯:Spring Cloud Config:Git 後端
譯:什麼是 Spring Boot?

TAG:SpringForAll社區 |