標籤:中比 建立 不能 url 程式配置 代碼 比較 ica 執行個體化
BeanFacotry是spring中比較原始的Factory。如XMLBeanFactory就是一種典型的BeanFactory。原始的BeanFactory無法支援spring的許多外掛程式,如AOP功能、Web應用等。
ApplicationContext介面,它由BeanFactory介面派生而來,因而提供BeanFactory所有的功能。ApplicationContext以一種更向面向架構的方式工作以及對上下文進行分層和實現繼承,ApplicationContext包還提供了以下的功能:
• MessageSource, 提供國際化的訊息訪問
• 資源訪問,如URL和檔案 (統一的資源檔讀取方式)
• 事件傳播 ,有強大的事件機制(Event)
• 載入多個(有繼承關係)上下文 ,使得每一個上下文都專註於一個特定的層次,比如應用的web層
BeanFactroy採用的是消極式載入形式來注入Bean的,即只有在使用到某個Bean時(調用getBean()),才對該Bean進行載入執行個體化,這樣,我們就不能發現一些存在的Spring的配置問題。而ApplicationContext則相反,它是在容器啟動時,一次性建立了所有的Bean。這樣,在容器啟動時,我們就可以發現Spring中存在的配置錯誤。 相對於基本的BeanFactory,ApplicationContext 唯一的不足是佔用記憶體空間。當應用程式配置Bean較多時,程式啟動較慢。
BeanFactory和ApplicationContext都支援BeanPostProcessor、BeanFactoryPostProcessor的使用,但兩者之間的區別是:BeanFactory需要手動註冊,而ApplicationContext則是自動註冊。(Applicationcontext比 beanFactory 加入了一些更好使用的功能。而且 beanFactory 的許多功能需要通過編程實現而 Applicationcontext 可以通過配置實現。比如後處理 bean , Applicationcontext 直接配置在設定檔即可而 beanFactory 這要在代碼中顯示的寫出來才可以被容器識別。 )
Spring的beanFactory與ApplicationContext區別