沒有網(wǎng)站可以做seo最新軍事頭條
1.寫在前面的話
這里主要簡單說一下Spring Framework的幾個核心組件的總體情況。為了比較直觀,這里使用了ClassPathXmlApplicationContext的類圖來進行說明。它基本上包含了 IoC 體系中大部分的核心類和接口。類圖如下圖所示:
2.Resource 組件體系
Resource相關組件基本都在org.springframework.core.io包下,包括Resource和ResourceLoader。
2.1 Resource組件
Resource組件的類圖如下:
它是對資源的抽象。Resource每一個實現(xiàn)類都代表了一種資源的訪問策略,如 ClassPathResource、RLResource、FileSystemResource 等。
2.2 ResourceLoader組件
ResourceLoader主要是為了加載上面的Resource資源,類圖如下:
3.BeanFactory 組件體系
BeanFactory,在org.springframework.beans.factory報下,是一個非常純粹的 bean 容器,它是 IoC 必備的數(shù)據(jù)結構,其中 BeanDefinition 是它的基本結構。BeanFactory 內(nèi)部維護著一個BeanDefinition map ,并可根據(jù) BeanDefinition 的描述進行 bean 的創(chuàng)建和管理。
BeanFactory 有三個直接子類 ListableBeanFactory、HierarchicalBeanFactory 和 AutowireCapableBeanFactory 。DefaultListableBeanFactory 為最終默認實現(xiàn),它實現(xiàn)了所有接口。
4.BeanDefinition 組件體系
BeanDefinition ,主要是用來描述 Spring Framework中的 Bean 對象。主要類圖如下:
5.BeanDefinitionReader 組件體系
BeanDefinitionReader 的作用是讀取 Spring 的配置文件的內(nèi)容,并將其轉換成 Ioc 容器內(nèi)部的數(shù)據(jù)結構 :BeanDefinition 。它的主要類圖如下:
6. ApplicationContext 組件體系
ApplicationContext,叫做應用上下文,與我們應用息息相關。它繼承 BeanFactory ,所以它是 BeanFactory 的擴展升級版。ApplicationContext雖然繼承BeanFactory ,但是它的結構與BeanFactory卻大大不同。其主要區(qū)別如下:
- 繼承 org.springframework.context.MessageSource 接口,提供國際化的標準訪問策略。
- 繼承 org.springframework.context.ApplicationEventPublisher 接口,提供強大的事件機制。
- 擴展 ResourceLoader ,可以用來加載多種 Resource ,可以靈活訪問不同的資源。
- 對 Web 應用的支持。
主要類圖如下:
通過上面五個體系,我們可以看出,IoC 主要由 spring-beans 和 spring-context 項目,進行實現(xiàn)。