Spring核心組件剖析

PaulaRichar 8年前發布 | 35K 次閱讀 Spring JEE框架

Spring核心組件

Spring的核心組件有很多,但構成其骨骼的,是Core,Context和Bean。

Bean

三者之中,Bean是核心中的核心。Bean實現了將對象通過配置文件的方式,由Spring來管理對象存儲空間,生命周期的分配。通過 依賴注入 的方式,可以實現將對象注入到指定的業務邏輯類中。這些 注入關系 ,由Ioc容器來管理。

因此,Spring的核心思想常常被稱作 BOP(Bean Oriented Programming) ,面向Bean編程。

Bean組件定義在Spring的 org.springframework.beans 包下,解決了以下幾個問題:

  1. Bean的 定義

  2. Bean的 創建

  3. Bean的 解析

使用者只需要關注Bean的創建,其他兩個過程由Spring內部完成。

1.整體架構

Spring Bean的整體架構是典型的工廠模式,最上層的接口是 BeanFactory 。ListableBeanFactory、HierarchicalBeanFactory和AutowireCapableBean是其子類,目的是為了 區分Spring內部對象處理和轉化的數據限制

  • ListableBeanFactory : 表示這些Bean是可列表的

  • HierarchicalBeanFactory : 表示這些Bean有繼承關系

  • AutowireCapableBeanFactory : 定義Bean的自動裝配規則

這幾個接口分別定義了Bean的集合、Bean的關系和Bean的行為。

2.Bean定義

Bean的定義主要由BeanDefinition描述,層次關系如下:

Spring的配置文件中定義的 節點,成功解析后都會被轉化為BeanDefinition對象,之后所有的操作都會在BeanDefinition對象之上進行。

3.Bean解析

Bean解析的主要任務是:對Spring的配置文件進行解析,最后生成BeanDefinition對象。

解析過程非常復雜,包括配置文件里所有的tag。主要參與的類如下:

Context

Bean包裝的是一個個Object,Object中存儲著業務所需的數據。所以,如何給這些數據及之間的關系提供生存、運行環境(即 保存對象的狀態 ),就是Context要解決的問題。Context實際上就是Bean關系的集合,又稱之為 Ioc容器

ApplicationContext是Context最上層的接口,層次關系如下:

ApplicationContext能夠標識一個應用環境的 基本信息 。其上繼承了5個接口,用于拓展Context的功能,其中BeanFactory用于創建Bean,同時繼承了 ResourceLoader 接口,用于訪問任何外部資源。

ApplicationContext的子類,主要包括:

  1. ConfigurableApplicationContext : 用戶 可動態配置修改信息 的Context,其下AbstractRefreshableApplicationContext最為常用。

  2. WebApplicationContext :
    為Web應用準備的Context,可以直接訪問ServletContext。

總之,ApplicationContext必須完成的功能如下:

  • 標識一個應用環境

  • 利用BeanFactory創建Bean對象

  • 保存 對象關系表

  • 捕獲各種事件

作為Ioc容器,Context是Spring其他大部分功能的 基礎

Core

Spring 發現、建立和維護Bean之間關系的 一攬子工具 ,稱之為Core。實際上就是所需的Util。

Core的重要組成部分之一是 Resource

1. Resource整體層次

Resource主要定義了 資源的訪問方式 ,所有資源都抽象到了Resource接口中,層次關系如下:

  • 資源包裝 。Resource向上繼承了 InputStreamSource 接口,所有的資源都通過InputStream來獲取,從而屏蔽了資源提供者。

  • 資源加載 。Resource下的 ResourceLoader 接口,所有資源加載者統一實現該接口就能 加載所有的資源 ,例如之前的ApplicationContext。

2. 與Context建立關系

如圖,ApplicationContext通過 ResourcePatternResolver 接口與 ResourceLoader 進行交互,來進行資源的加載、解析和描述。ResourcePatternResolver將資源封裝整合,便于其他組件使用。

總結

本文主要總結了構成Spring骨骼框架的三大核心組件及其之間的聯系,以及對三者實現原理理解的一些心得體會。

 

 

來自:http://www.cnblogs.com/ACFLOOD/p/6022667.html

 

 本文由用戶 PaulaRichar 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
 轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
 本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!