1. 程式人生 > >IOC容器的設計(三) —ApplicationContext 的應用場景與設計原理

IOC容器的設計(三) —ApplicationContext 的應用場景與設計原理

IOC容器的設計(三) — ApplicationContext 的應用場景與設計原理

應用場景

相比較基於BeanFactory拓展的那些容器,ApplicationContext是開發人員經常用到的,ApplicationContext除了能實現那些基本功能之外,還附加了BeanFactory不具備的搞基特性,比如支援不同的資訊源,能進行實現國際化(繼承MessageResource),繼承ResourceLoader來實現訪問資源,繼承ApplicationEventPublisher,支援應用事件,為管理Bean的生產週期提供了便利。

ApplicationContext 相對於BeanFactory

相比,是一種面向框架的使用風格,所以一般建議使用ApplicationContext 作為IoC容器的基本形式。後續會專門講BeanFactoryApplicationContext進行比較。

設計原理

在ApplicationContext容器中,以比較常用的實現FileSystemXmlApplicationContext為例來做舉例說明。

FileSystemXmlApplicationContext的設計中,我們可以看到繼承的AbstractXmlApplicationContext已經完成主要功能了,作為一個應用上下文,只需要實現兩個功能:

  • 直接使用FileSystemXmlApplicationContext,對於例項化這個的應用上下文的支援,同時啟動IoC容器的refresh()過程,這個refresh()會牽扯到IoC一系列的操作。

  • 主要與檔案系統載入XML的Bean定義資源有關係,可以為檔案系統中讀取以XML存在的BeanDefination做準備,因為不同的應用上下文實現對應著不同的讀取BeanDefination的方式