Spring 原始碼開篇詞 - IOC的形成要素
阿新 • • 發佈:2019-12-31
##形成IOC並具有良好擴充套件性的要素 -- 五步
含有基本要素Bean的定義 -- BeanDefinition
- 具體Bean的物件
- Bean的Class
- Bean的ClassName
- Bean的
配置屬性及值
物件
Bean的工廠 -- BeanFactory
- 工廠介面,具有獲取Bean的方法
- 實現介面的抽象工廠(用於延遲實現獲取Bean的方法)
- 具體獲取Bean的工廠
解析配置xml的工具 -- BeanDefinitionReader
- Bean資源解析介面
- 實現介面的Bean資源解析抽象類(同樣是延遲實現解析方式)
- 具體Bean資源解析類
- ps:(Spring boot其實就是預先將這些配置通過註解的方式率先初始化好了,這裡先講講xml方式能更好理解起原理)
讀取配置的IO -- Resource
- 資源讀取的介面
- 用於從某一位置讀取資源的載入器,返回用於具體讀取的類
- 實現介面的具體讀取類,提供讀取流
與客戶端進行直接互動的環境 -- Context
- 繼承Bean工廠介面的環境介面
- 實現環境介面的抽象類(在類中組合使用抽象Bean工廠,實現呼叫時具體獲取到Bean例項)
- 具體實現的環境類(通過對xml解析器的呼叫與註冊Beans到工廠中來實現載入BeanDefinitions)
再來看看Spring的架構
白話Spring架構
- Spring framework和Java類似,它們都是構建一個資料結構,然後根據這個資料結構去設計它的生存環境,並讓它在這個環境中進行一系列活動,與其他個體包括環境進行資訊互動。
- 在這個過程中,Bean是主角,而Context就是Bean活動的大環境,Core就是Bean生活下去的必備工具,而其他如AOP、Transaction、Orm、Web、Test這些東西都是為了讓bean能活得多姿多彩而實現的功能。
Core Container
- Core主要包含Spring的核心工具類
- Beans包含訪問配置檔案、建立和管理Bean以及進行IOC/DI操作的相關類
- Context構建在Core和Beans的基礎上,其繼承了Beans的特性(提供了很多擴充套件 -- 國際化、事件傳播、資源載入等),支援J2EE特性(EJB、JMX等),其中ApplicationContext是重中之重。
- Expression Language 模組提供了表示式語言。用於在執行時查詢操縱物件。
Date Access/Integration
- JDBC包含Spring 對JDBC是資料訪問進行封裝的所有類
- ORM包含關係對映API(JPA、Hibernate、mybatis)的互動層,利用ORM封裝包。
- OXM提供對Object/XML對映的抽象層。
- JMS包含製造與消費訊息的特性。
- Transaction支援事務管理
Web
- web提供基礎web整合特性
- websocket提供長連線抽象層
- Web MVC的實現
- porlet提供potlet與servlet環境的MVC實現
AOP
- AOP包含了主要實現
- Aspects提供AsoectJ整合支援
- Instrument基於 JAVA SE 中的"java.lang.instrument"進行設計的, 應該算是AOP 的一個支援模組, 主要作用是在 JVM 啟用時, 生成一個代理類, 程式設計師通過代理類在執行時修改類的位元組, 從而改變一個類的功能, 實現 AOP 的功能。
- messaging模組為整合messaging api和訊息協議提供支援
Test
支援使用測試框架對Spring元件的測試