Spring源碼分析-IOC容器ApplicationContext應用場景

昨天我們理解了IOC容器建立的基本步驟。理解這些步驟之後,可以很方便地通過編程地方式來手工控制這些配置和容器地建立過程。但是,在Spring中,系統已經為用戶提供了許多已經定義好地容器實現,而不需要開發人員事必躬親。相比那些簡單拓展BeanFactory的基本容器,開發人員常用的ApplicationContext除了能夠提供前面介紹的容器的基本功能外,還為用戶提供了以下附加服務,可以讓客戶更方便地使用。所以說,ApplicationContext是一個高級形態意義地IOC容器,如圖1所示,可以看到ApplicationContext在BeanFactory地基礎上添加地附加功能,這些功能為ApplicationContext提供了以下BeanFactory不具備地新特性。

Spring源碼分析-IOC容器ApplicationContext應用場景

圖1

1. 支持不同地信息源。我們看到ApplicationContext擴展了MessageSource接口,這些信息源的擴展功能可以支持國際化的實現,為開發多語言版本的應用提供服務。

2. 訪問資源。這一特性體現在對ResourceLoader和Resource的支持,這些我們可以從不同地方得到Bean定義資源。這種 使用戶可以靈活地定義Bean定義信息,尤其是從不同地I/O途徑得到Bean定義信息。這在接口關係上看不出來,不過一般來說,具體ApplicationContext都是繼承了DefaultResourceLoader的子類。因為DefaultResourceLoader是AbstractApplicationContext的基類,關於Resource在IOC容器中的使用,後面會有詳細的講解。

3. 支持應用事件。繼承了接口ApplicaionContextEventPublisher,從而在上下文引入了事件機制。這些事件和Bean的生命週期的結合為Bean的管理提供了便利。

4. 在ApplicaionContext中提供的附加服務。這些服務使得基本IOC容器的功能更豐富。因為具備了這些豐富的附加功能,使得ApplicationContext與簡單的BeanFactory相比,對它的使用是一種面向框架的使用風格,所以一般建議在開發應用時使用ApplicationContext作為IOC容器的基本形式。


分享到:


相關文章: