IOC容器的設計(三) —ApplicationContext 的應用場景與設計原理
阿新 • • 發佈:2018-12-19
IOC容器的設計(三) — ApplicationContext 的應用場景與設計原理
應用場景
相比較基於
BeanFactory
拓展的那些容器,ApplicationContext
是開發人員經常用到的,ApplicationContext
除了能實現那些基本功能之外,還附加了BeanFactory
不具備的搞基特性,比如支援不同的資訊源,能進行實現國際化(繼承MessageResource
),繼承ResourceLoader
來實現訪問資源,繼承ApplicationEventPublisher
,支援應用事件,為管理Bean的生產週期提供了便利。
ApplicationContext
相對於BeanFactory
ApplicationContext
作為IoC容器的基本形式。後續會專門講BeanFactory
與ApplicationContext
進行比較。
設計原理
在ApplicationContext容器中,以比較常用的實現FileSystemXmlApplicationContext
為例來做舉例說明。
在FileSystemXmlApplicationContext
的設計中,我們可以看到繼承的AbstractXmlApplicationContext
已經完成主要功能了,作為一個應用上下文,只需要實現兩個功能:
-
直接使用FileSystemXmlApplicationContext,對於例項化這個的應用上下文的支援,同時啟動IoC容器的refresh()過程,這個refresh()會牽扯到IoC一系列的操作。
-
主要與檔案系統載入XML的Bean定義資源有關係,可以為檔案系統中讀取以XML存在的BeanDefination做準備,因為不同的應用上下文實現對應著不同的讀取BeanDefination的方式