【Spring源碼這樣讀】-認識Spring的基本功能

讀源碼之前我們不妨去熟悉一下框架到底有哪些功能點,然後在根據功能點去提問,更有助於我們去讀源碼。比較熟練使用框架的大佬可以跳過,這裏算是回顧一下技術

  • 參考書籍 《Spring源碼深度解讀》

在這裏插入圖片描述

Spring整體架構圖

spring總共有20幾個模塊,包含的功能非常多,如果我們貿然的入手某一個功能,只會凌亂在龐大的代碼量中。所以我們不妨拔高切入點,直接從架構圖入手。(該圖出自:spring 4.3.27的doc 2.2章節,最新的5.3.4並沒有)

在這裏插入圖片描述

架構圖中模塊的作用

<h6> Core Container(核心容器)</h6> 該模塊是Spring的核心模塊,包含了我們平常能夠用到的很多的核心工具類。它包含有Core、Beans、Context和Expression Language模塊。Core和Beans模塊是框架的基礎部分,提供IoC(反轉控制)和依賴注入特性。這裏的基礎概念是BeanFactory,它對Factory模式的金典實現來消除對程序性單利模式的需要,並真正地允許你從程序邏輯中分離出依賴關係和配置。 - Core 模塊主要包含Spring框架基本的核心工具類,Spring的其他組件都需要使用這個包裏的類。 - Beans模塊是所有應用都要用到的,它包含訪問配置文件,創建和管理bean以及進行控制反轉、依賴注入操作相關的所有類。 - Context模塊構建於Core和Beans基礎之上 ,提供了一種類似JNDI註冊器的框架式的對象訪問方法,Context繼承了Beans的特性,爲Spring核心提供了大量擴展,追加了對國際化、事件傳播、資源加載和對Context的透明創建支持。 - Expression Language模塊提供了一個強大的表達式語言用於在運行時查詢和操作對象。

<h6> Data Access/Integration(數據訪問/集成)</h6> 數據訪問/集成層包括 JDBC、ORM、OXM、JMS 和 Transactions 模塊,具體介紹如下。 - JDBC 模塊(這一模塊對於開發人原來說應該是再熟悉不過了):提供了一個 JDBC 的抽象層,大幅度減少了在開發過程中對數據庫操作的編碼。 - ORM 模塊:對流行的對象關係映射 API,包括 JPA、JDO、Hibernate 和 iBatis 提供了的集成層。 - OXM 模塊:提供了一個支持對象/XML 映射的抽象層實現,如 JAXB、Castor、XMLBeans、JiBX 和 XStream。 - JMS 模塊:指 Java 消息服務,包含的功能爲生產和消費的信息。 - Transactions 事務模塊:支持編程和聲明式事務管理實現特殊接口類,併爲所有的 POJO。

<h6> Web </h6> Spring 的 Web 層包括 Web、Servlet、Struts 和 Portlet 組件,具體介紹如下。 - Web 模塊:提供了基本的 Web 開發集成特性,例如多文件上傳功能、使用的 Servlet 監聽器的 IoC 容器初始化以及 Web 應用上下文。 - Servlet模塊:包括 Spring 模型—視圖—控制器(MVC)實現 Web 應用程序。 - Struts 模塊:包含支持類內的 Spring 應用程序,集成了經典的 Struts Web 層。 - Portlet 模塊:提供了在 Portlet 環境中使用 MV C實現,類似 Web-Servlet 模塊的功能。

<h6> AOP </h6> AOP 模塊:提供了面向切面編程實現,允許定義方法攔截器和切入點,將代碼按照功能進行分離,以降低耦合性。

<h6> Aspects </h6> Aspects 模塊:提供與 AspectJ 的集成,是一個功能強大且成熟的面向切面編程(AOP)框架。

<h6> Instrumentation </h6> Instrumentation 模塊:提供了類工具的支持和類加載器的實現,可以在特定的應用服務器中使用。

<h6> Messaging </h6> Messaging模塊爲集成messaging api和消息協議提供支持。

<h6> Test </h6> Test 模塊:支持 Spring 組件,使用 JUnit 或 TestNG 框架的測試。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章