Spring 體系結(jié)構(gòu)

2022-05-21 15:16 更新

Spring 有可能成為所有企業(yè)應(yīng)用程序的一站式服務(wù)點(diǎn),然而,Spring 是模塊化的,允許你挑選和選擇適用于你的模塊,不必要把剩余部分也引入。下面的部分對在 Spring 框架中所有可用的模塊給出了詳細(xì)的介紹。

Spring 框架提供約 20 個模塊,可以根據(jù)應(yīng)用程序的要求來使用。

Spring 體系結(jié)構(gòu)

核心容器

核心容器由 spring-core,spring-beans,spring-context,spring-context-support和spring-expression(SpEL,Spring 表達(dá)式語言,Spring Expression Language)等模塊組成,它們的細(xì)節(jié)如下:

  • spring-core 模塊提供了框架的基本組成部分,包括 IoC 和依賴注入功能。

  • spring-beans 模塊提供 BeanFactory,工廠模式的微妙實(shí)現(xiàn),它移除了編碼式單例的需要,并且可以把配置和依賴從實(shí)際編碼邏輯中解耦。

  • context 模塊建立在由 core和 beans 模塊的基礎(chǔ)上建立起來的,它以一種類似于 JNDI 注冊的方式訪問對象。Context 模塊繼承自 Bean 模塊,并且添加了國際化(比如,使用資源束)、事件傳播、資源加載和透明地創(chuàng)建上下文(比如,通過 Servelet 容器)等功能。Context 模塊也支持 Java EE 的功能,比如 EJB、JMX 和遠(yuǎn)程調(diào)用等。ApplicationContext 接口是 Context 模塊的焦點(diǎn)。spring-context-support 提供了對第三方集成到 Spring 上下文的支持,比如緩存(EhCache, Guava, JCache)、郵件(JavaMail)、調(diào)度(CommonJ, Quartz)、模板引擎(FreeMarker, JasperReports, Velocity)等。

  • spring-expression 模塊提供了強(qiáng)大的表達(dá)式語言,用于在運(yùn)行時查詢和操作對象圖。它是 JSP2.1 規(guī)范中定義的統(tǒng)一表達(dá)式語言的擴(kuò)展,支持 set 和 get 屬性值、屬性賦值、方法調(diào)用、訪問數(shù)組集合及索引的內(nèi)容、邏輯算術(shù)運(yùn)算、命名變量、通過名字從 Spring IoC 容器檢索對象,還支持列表的投影、選擇以及聚合等。

它們的完整依賴關(guān)系如下圖所示:

Spring 體系結(jié)構(gòu)

數(shù)據(jù)訪問/集成

數(shù)據(jù)訪問/集成層包括 JDBC,ORM,OXM,JMS 和事務(wù)處理模塊,它們的細(xì)節(jié)如下:

(注:JDBC=Java Data Base Connectivity,ORM=Object Relational Mapping,OXM=Object XML Mapping,JMS=Java Message Service)

  • JDBC 模塊提供了 JDBC 抽象層,它消除了冗長的 JDBC 編碼和對數(shù)據(jù)庫供應(yīng)商特定錯誤代碼的解析。

  • ORM 模塊提供了對流行的對象關(guān)系映射 API 的集成,包括 JPA、JDO 和 Hibernate 等。通過此模塊可以讓這些 ORM 框架和 spring的其它功能整合,比如前面提及的事務(wù)管理。

  • OXM 模塊提供了對 OXM 實(shí)現(xiàn)的支持,比如 JAXB、Castor、XML Beans、JiBX、XStream 等。

  • JMS 模塊包含生產(chǎn)(produce)和消費(fèi)(consume)消息的功能。從 Spring 4.1 開始,集成了 spring-messaging 模塊。

  • 事務(wù)模塊為實(shí)現(xiàn)特殊接口類及所有的 POJO 支持編程式和聲明式事務(wù)管理。(注:編程式事務(wù)需要自己寫 beginTransaction()、commit()、rollback() 等事務(wù)管理方法,聲明式事務(wù)是通過注解或配置由 spring 自動處理,編程式事務(wù)粒度更細(xì))

Web

Web 層由 Web,Web-MVC,Web-Socket 和 Web-Portlet 組成,它們的細(xì)節(jié)如下:

  • Web 模塊提供面向 web 的基本功能和面向 web 的應(yīng)用上下文,比如多部分(multipart)文件上傳功能、使用 Servlet 監(jiān)聽器初始化 IoC 容器等。它還包括 HTTP 客戶端以及 Spring 遠(yuǎn)程調(diào)用中與 web 相關(guān)的部分。

  • Web-MVC 模塊為 web 應(yīng)用提供了模型視圖控制(MVC)和 REST Web服務(wù)的實(shí)現(xiàn)。Spring 的 MVC 框架可以使領(lǐng)域模型代碼和 web 表單完全地分離,且可以與 Spring 框架的其它所有功能進(jìn)行集成。

  • Web-Socket 模塊為 WebSocket-based 提供了支持,而且在 web 應(yīng)用程序中提供了客戶端和服務(wù)器端之間通信的兩種方式。

  • Web-Portlet 模塊提供了用于 Portlet 環(huán)境的 MVC 實(shí)現(xiàn),并反映了 spring-webmvc 模塊的功能。

Test模塊

Test 模塊:Spring 支持 Junit 和 TestNG 測試框架,而且還額外提供了一些基于 Spring 的測試功能,比如在測試 Web 框架時,模擬 Http 請求的功能。

其他

還有其他一些重要的模塊,像 AOP,Aspects,Instrumentation,Web 和測試模塊,它們的細(xì)節(jié)如下:

  • AOP 模塊提供了面向方面(切面)的編程實(shí)現(xiàn),允許你定義方法攔截器和切入點(diǎn)對代碼進(jìn)行干凈地解耦,從而使實(shí)現(xiàn)功能的代碼徹底的解耦出來。使用源碼級的元數(shù)據(jù),可以用類似于.Net屬性的方式合并行為信息到代碼中。

  • Aspects 模塊提供了與 AspectJ 的集成,這是一個功能強(qiáng)大且成熟的面向切面編程(AOP)框架。

  • Instrumentation 模塊在一定的應(yīng)用服務(wù)器中提供了類 instrumentation 的支持和類加載器的實(shí)現(xiàn)。

  • Messaging 模塊為 STOMP 提供了支持作為在應(yīng)用程序中 WebSocket 子協(xié)議的使用。它也支持一個注解編程模型,它是為了選路和處理來自 WebSocket 客戶端的 STOMP 信息。

  • 測試模塊支持對具有 JUnit 或 TestNG 框架的 Spring 組件的測試。


以上內(nèi)容是否對您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號
微信公眾號

編程獅公眾號