1. 程式人生 > 實用技巧 >Spring Framework 5 模組組成、體系結構、整體架構

Spring Framework 5 模組組成、體系結構、整體架構

核心容器(Core Containe)

核心容器提供了Spring框架的基本功能,是其它模組建立的基礎,有 spring-corespring-beansspring-contextspring-context-supportspring-expression(Expression Language、SpEL)組成。spring-beansspring-core是spring框架的核心模組。

spring-core

提供了框架的基本組成部分,包括控制翻轉(Inversion of Control, IOC)依賴注入(Dependency Injection, DI)功能。

spring-beans

提供了BeanFactoryBeanFactory介面是spring框架中的核心介面,它是工廠模式的經典實現。BeanFactory使用控制翻轉對應用程式的配置和依賴性規範與實際的應用程式程式碼進行了分離。但BeanFactory容器例項化後並不會自動建立例項化Bean,只有當Bean被使用的時候BeanFactory容器才會對該Bean進行例項化與依賴關係的裝配。

spring-context

spring-context模組構架與spring-corespring-beans模組之上,提供了一個框架式的物件訪問方式,是訪問定義和配置的任意物件的媒介。它擴充套件了BeanFactory

,為其增加了Bean生命週期控制、框架事件體系以及資源載入透明化等功能。

ApplicationContext是該模組的核心介面,它是BeanFactory的子類,與BeanFactory不同的是ApplicationContext容器例項化後會自動對所有的單例項Bean進行例項化與依賴關係的裝配,使之處於待用狀態。

spring-context-support

用於將常見的第三方庫整合到spring應用程式上下文中。該模組提供了快取記憶體、任務排程、郵件訪問等支援。

spring-expression

該模組是對JSP2.1規範中規定的統一表達式語言EL的擴充套件模組,它提供了強大的表示式語言去支援執行時查詢和操作執行中的物件,該語言支援設定和獲取屬性值、屬性分配、方法呼叫、訪問陣列、集合和索引器的內容、邏輯和算術運算、變數命名以及從Spring的IOC容器中以名稱檢索物件。它還支援列表投影、選擇以及常用的列表聚合。

它的語法類似於傳統的EL,但提供了額外的功能。最出色的要數函式呼叫和簡單字串的模板函式。這種語言的特性是基於 spring 產品的需求而設計, 他可以非常方便地同 spring IOC 進行互動。

AOP 和裝置支援(AOP)

spring-aopspring-aspectsspring-instrument 3個模組組成。

spring-aop

spring-aop 是spring的另一個核心模組,提供了一個符合AOP要求的面相切面的程式設計實現。作為繼OOP之後,對程式設計師影響最大的程式設計思想之一,AOP極大的開拓了人們對於程式設計的思路。

spring中,以JDK動態代理的技術為基礎,設計出了一系列的AOP橫切實現,比如:前置通知返回通知異常通知等。同時使用 Pointcut 介面匹配切入點,可以使用現有的切入點設計橫切面;也可以擴充套件相關方法根據需求進行切入,將程式碼按照功能進行分離,以便乾淨的解耦。

spring-aspects

提供了與AspectJ的整合功能,主要是為AOP提供了多種實現方法。

spring-instrument

該模組是spring-aop的一個支援模組,提供了類植入(Instrumentation)支援和類載入器的實現。主要作用於JVM啟動時,生成一個代理類,程式設計師通過代理類在執行時修改類的位元組,從而改變一個類的功能,實現AOP的功能。

資料訪問與整合(Data Access/Integration)

spring-jdbcspring-ormspring-oxmspring-jmsspring-tx組成。

spring-jdbc

spring-jdbc模組是spring提供的JDBC抽象層,消除了繁瑣的編碼以及資料庫廠商特有的錯誤程式碼解析。用於簡化JDBC,主要提供JDBC的模板方法、關係資料庫物件化方式、事務管理來簡化JDBC程式設計,主要實現類有JdbcTemplateSimpleJdbcTemplate以及NamedParameterJdbcTemplate

spring-orm

spring-orm模組是ORM的支援模組,主要整合HibernateJava Persistence API(JPA)Java Data Object(JDO)用於資源管理、資料訪問物件(DAO)的實現和事務策略。

spring-oxm

spring-oxm模組主要提供一個抽象層支撐OXM(Object-to-XML-Mapping),例如:JAXBCastorXMLBeansJiBXXStream等。

spring-jms

spring-jms模組(Java Message Service)為Java訊息傳遞服務,能夠傳送和接收資訊,自Spring Framework 4.1 以後,它還提供了對spring-messaging模組的繼承。

spring-tx

spring-tx模組是spring-jdbc事務控制實現模組,支援用於實現所有介面和所有POJO(普通Java物件)類的程式設計和宣告式事務的管理。

Web

spring-websocketspring-webmvcspring-webspring-webflux組成

spring-web

spring-web模組為spring提供了最基礎的web支援,主要建立在核心容器之上,通過Servlet或者Listeners來初始化IOC容器以及Web應用上下文,自動裝載WebApplicationContext,也包含一些與web相關的支援,如:Struts整合類、檔案上傳支援的類、FIlter類和大量輔助工具類。

spring-webmvc

也稱web-servlet模組,包含用於Web應用程式的Spring MVCREST Web Service實現。Spring MVC框架提供了領域模型程式碼和Web表單之間的清晰分離,並與Spring Framework的所有其他功能整合。

spring-websocket

Spring4.0以後新增的模組,實現雙工非同步通訊協議,實現了WebSocketSocketJS,提供Socket通訊和Web端的推送功能。

spring-webflux

是一個新的非堵塞函式式Reactive Web框架,可以用來建立非同步的,非阻塞,事件驅動的服務,並且擴充套件性非常好。

訊息(Messaging)

spring-messaging

spring-messaging 是從 Spring4.0 開始新加入的一個模組,主要職責是為 Spring 框架整合一些基礎的報文傳送應用。

Test

spring-test

spring-test模組主要為測試提供支援的,畢竟在不需要釋出(程式)到你的應用伺服器或者連線到其他企業設施的情況下能夠執行一些整合測試或者其他測試對於任何企業都是非常重要的。

spring 各模組依賴關係

參考文章:

https://blog.csdn.net/lj1314ailj/article/details/80118372

https://blog.csdn.net/ThinkWon/article/details/102810819