1. 程式人生 > 程式設計 >Spring 原始碼開篇詞 - IOC的形成要素

Spring 原始碼開篇詞 - IOC的形成要素

##形成IOC並具有良好擴充套件性的要素 -- 五步

含有基本要素Bean的定義 -- BeanDefinition

  1. 具體Bean的物件
  2. Bean的Class
  3. Bean的ClassName
  4. Bean的 配置屬性及值 物件

Bean的工廠 -- BeanFactory

  1. 工廠介面,具有獲取Bean的方法
  2. 實現介面的抽象工廠(用於延遲實現獲取Bean的方法)
  3. 具體獲取Bean的工廠

解析配置xml的工具 -- BeanDefinitionReader

  1. Bean資源解析介面
  2. 實現介面的Bean資源解析抽象類(同樣是延遲實現解析方式)
  3. 具體Bean資源解析類
  • ps:(Spring boot其實就是預先將這些配置通過註解的方式率先初始化好了,這裡先講講xml方式能更好理解起原理)

讀取配置的IO -- Resource

  1. 資源讀取的介面
  2. 用於從某一位置讀取資源的載入器,返回用於具體讀取的類
  3. 實現介面的具體讀取類,提供讀取流

與客戶端進行直接互動的環境 -- Context

  1. 繼承Bean工廠介面的環境介面
  2. 實現環境介面的抽象類(在類中組合使用抽象Bean工廠,實現呼叫時具體獲取到Bean例項)
  3. 具體實現的環境類(通過對xml解析器的呼叫與註冊Beans到工廠中來實現載入BeanDefinitions)

再來看看Spring的架構

SpringFramework架構圖.png

白話Spring架構

  1. Spring framework和Java類似,它們都是構建一個資料結構,然後根據這個資料結構去設計它的生存環境,並讓它在這個環境中進行一系列活動,與其他個體包括環境進行資訊互動。
  2. 在這個過程中,Bean是主角,而Context就是Bean活動的大環境,Core就是Bean生活下去的必備工具,而其他如AOP、Transaction、Orm、Web、Test這些東西都是為了讓bean能活得多姿多彩而實現的功能。

Core Container

  1. Core主要包含Spring的核心工具類
  2. Beans包含訪問配置檔案、建立和管理Bean以及進行IOC/DI操作的相關類
  3. Context構建在Core和Beans的基礎上,其繼承了Beans的特性(提供了很多擴充套件 -- 國際化、事件傳播、資源載入等),支援J2EE特性(EJB、JMX等),其中ApplicationContext是重中之重。
  4. Expression Language 模組提供了表示式語言。用於在執行時查詢操縱物件。

Date Access/Integration

  1. JDBC包含Spring 對JDBC是資料訪問進行封裝的所有類
  2. ORM包含關係對映API(JPA、Hibernate、mybatis)的互動層,利用ORM封裝包。
  3. OXM提供對Object/XML對映的抽象層。
  4. JMS包含製造與消費訊息的特性。
  5. Transaction支援事務管理

Web

  1. web提供基礎web整合特性
  2. websocket提供長連線抽象層
  3. Web MVC的實現
  4. porlet提供potlet與servlet環境的MVC實現

AOP

  1. AOP包含了主要實現
  2. Aspects提供AsoectJ整合支援
  3. Instrument基於 JAVA SE 中的"java.lang.instrument"進行設計的, 應該算是AOP 的一個支援模組, 主要作用是在 JVM 啟用時, 生成一個代理類, 程式設計師通過代理類在執行時修改類的位元組, 從而改變一個類的功能, 實現 AOP 的功能。
  4. messaging模組為整合messaging api和訊息協議提供支援

Test

支援使用測試框架對Spring元件的測試

這兒僅僅只是一個開篇詞

之後關於Spring原始碼解析的文章,我會從Bean的定義與工廠開始講起,然後依次是Bean配置的讀取方式、資源讀取與應用環境剖析,敬請期待。