高級技術(shù)猿:Spring 框架架構(gòu)
這是Spring 框架體系結(jié)構(gòu)的概述。了解 Spring Framework 的各個(gè)組件如何組織和相互關(guān)聯(lián)。如果您想了解什么是 Spring 框架及其特性,請閱讀Spring 框架簡介。
概述
Spring 是一個(gè)模塊化框架。它不是一個(gè)包或多個(gè)模塊的捆綁包。各種彈簧組件作為獨(dú)立模塊提供。這使我們可以靈活地使用我們需要的東西并留下其余的東西。例如,如果我們想使用 Spring JMS 模塊,我們不需要將 Spring Web 模塊添加到我們的項(xiàng)目中。這使我們的應(yīng)用程序重量輕且集中。
春天架構(gòu)
讓我們從高級別的角度看一下 Spring 架構(gòu)(參考圖表),在本教程的后續(xù)部分中,我們將深入了解這些模塊中的每一個(gè)。如圖所示,Core 是 Spring Framework 的基礎(chǔ)。其他模塊,如 Web、數(shù)據(jù)訪問和其他模塊集。測試模塊(也基于核心)是獨(dú)立的,因?yàn)樗c測試應(yīng)用程序的彈簧支撐組件有關(guān)。
核心容器
核心容器是 Spring的核心。它包含一些基本框架類和工具。整個(gè) Spring Framework 都是基于Core Container 之上的。
核心容器模塊
提示:
如果你是一個(gè)完整的新手。Core Container 是您首先要熟悉的東西。如果你很好地理解了這一點(diǎn),你可以輕松地選擇任何 Spring Module。
彈簧芯
Core模塊包含基本的 Spring Framework 類,包括依賴注入 (DI) 和控制反轉(zhuǎn) (IOC)。Spring Core 可在 Spring Core Repo中獲得。無論您正在構(gòu)建哪種類型的 Spring 應(yīng)用程序,您都將始終對 Spring Core 具有直接或間接的依賴關(guān)系。
春豆
Spring Bean模塊管理 bean 的生命周期。在 Spring 框架中,Bean 是在 Spring 中注冊的任何 Java 類,Spring 管理這些 bean 類。Spring Bean 模塊有一個(gè)Bean Factory,它創(chuàng)建 bean 實(shí)例,解析 bean 到 bean 的依賴關(guān)系,并根據(jù)名稱或類型自動(dòng)連接 bean。
Spring Bean 模塊可以在Spring Beans Repo中找到。
彈簧上下文S
我們了解到 Spring Bean 負(fù)責(zé)管理 Spring Bean。這些 Spring Bean 在稱為 Context 的上下文中定義。在 Spring 中,每個(gè)對象都是一個(gè) Bean,讓它成為一個(gè)配置條目或一個(gè)用戶定義的類(例如 Employee)。所有此類 bean、它們的構(gòu)造函數(shù)或工廠方法和依賴項(xiàng)都在 Context 中定義。bean 通過上下文訪問。
大多數(shù)情況下,Spring 上下文在 Spring 應(yīng)用程序啟動(dòng)時(shí)啟動(dòng),因此稱為應(yīng)用程序上下文。鏈接到Spring Context Repo。
拼音
SpEL 代表Spring Expression Language,它是一種強(qiáng)大的完整表達(dá)語言。它用于在運(yùn)行時(shí)將表達(dá)式解析為值。SpEL 可以在運(yùn)行時(shí)查詢對象圖,并且可以在基于 XML 或注釋的 Bean 定義和 Bean 配置中使用。運(yùn)行時(shí)這個(gè)詞在這里非常重要,因?yàn)榭梢愿鶕?jù)運(yùn)行時(shí)配置或其他表達(dá)式的值來評估表達(dá)式。
可以在 Spring Expression Language Repo中找到。
春季網(wǎng)絡(luò)
從它本身的名稱可以很明顯地看出,Spring Web組件用于構(gòu)建 Web 應(yīng)用程序。使用 Spring Web 模塊,我們可以構(gòu)建完整的 MVC 應(yīng)用程序、攔截器、Web 服務(wù)、Portlet。
讓我們簡要了解一下 Web 組件。
Spring Web 和 Servlet
Spring Web 和 Servlets 提供了許多用于構(gòu)建 Web 集成的特性。我們在上面的一節(jié)中看到了什么是應(yīng)用程序上下文。Spring Web 提供了一個(gè)與上下文類似的 Web 應(yīng)用程序上下文。Spring Web 為 servlet 和控制反轉(zhuǎn) (IOC) 提供了抽象。
可以在Spring Web Repo中找到。
Spring Web 還有一個(gè)組件,那就是 Spring MVC。Spring MVC 提供了一種用于構(gòu)建基于模型視圖控制器的 Web 應(yīng)用程序的機(jī)制。Spring MVC 有 View 和 Actions 的概念。Views 代表用戶界面或消費(fèi)者,Action 是服務(wù) Web 請求的組件。
可以在Spring Web MVC Repo中找到。
Spring Web 套接字
Spring Web Sockets 提供對構(gòu)建 Web Sockets 的支持。Web Sockets 是 Web 應(yīng)用程序中服務(wù)和消費(fèi)者之間的一種隧道。在 HTTP 連接中,客戶端必須在服務(wù)器上輪詢?nèi)魏胃?。使?Web Sockets 在它們之間有一個(gè)雙向通信套接字,因此即使是服務(wù)器也可以直接將消息推送到客戶端。
可以在Spring Web Sockets Repo中找到。
Spring Web Portlet
Spring Web Portlets支持構(gòu)建 web poerlets。Portlet 是可插入的用戶界面軟件組件,在 Web 門戶中進(jìn)行管理和顯示。換句話說,它是一種在單個(gè)用戶界面上顯示多個(gè)應(yīng)用程序(portlet)的用戶界面的機(jī)制。通常這些portlet 是可插入和可排列的。
可以在Spring Web Portlet Repo中找到。
春季數(shù)據(jù)訪問
Spring Data Access是一組模塊,用于訪問各種格式的數(shù)據(jù),包括數(shù)據(jù)庫、消息傳遞和 XML。讓我們對模塊進(jìn)行簡要概述。
彈簧 JDBC
Spring JDBC提供了對 Java JDBC API的抽象。當(dāng)我們需要訪問數(shù)據(jù)庫中的數(shù)據(jù)時(shí),我們通常需要處理語句、查詢、結(jié)果集,尤其是異常。Spring JDBC 抽象,消除了所有這些復(fù)雜性,并提供JdbcTemplate來輕松訪問數(shù)據(jù)。它還提供了迭代和映射結(jié)果集的方法。
可以在Spring JDBC Repo中找到。
彈簧ORM
Spring ORM提供與各種 ORM 實(shí)現(xiàn)集成的支持。ORM 代表對象關(guān)系映射框架,其中數(shù)據(jù)逐個(gè)字段映射到 Java 對象。使用 ORM 框架,可以用數(shù)據(jù)填充純 Java 對象并傳遞給 ORM API 以存儲和類似地以純 Java 對象的形式檢索數(shù)據(jù)。Spring 為 Hibernate、JDO 和 JPA 等流行的 ORM 框架提供支持。
可在Spring Object/Relational Mapping Repo中找到 Cab 。
彈簧 JMS
JMS 代表 Java Messaging Service,它以消息的形式定義了發(fā)布者和訂閱者通信的規(guī)范。Spring JMS 提供了對各種 JMS 實(shí)現(xiàn)(如 ActiveMQ 和 RabbitMQ)的抽象。
可以在Spring JMS Repo中找到。
彈簧OXM
Spring OXM提供了對 Java OXM 實(shí)現(xiàn)的抽象。Java OXM(Object XML Marshalling)規(guī)范定義了以 XML 形式傳輸和訪問數(shù)據(jù)的方式。OXM 有多種實(shí)現(xiàn),例如 JAXB 和 XStream。
可在Spring Object/XML Marshalling Repo中找到 Cab 。
春季交易
Spring Transactions Management API 提供了管理數(shù)據(jù)對象和數(shù)據(jù)庫事務(wù)的統(tǒng)一方式。Transaction API 支持編程和聲明式事務(wù)管理。
可以在Spring Transaction Repo中找到。
雜項(xiàng)模塊
現(xiàn)在我們已經(jīng)到了教程的最后一部分。在本節(jié)中,我們將了解 Spring 重要的獨(dú)立模塊,它們可以被視為雜項(xiàng)類別。
春季AOP
Spring AOP是面向切面編程的一種實(shí)現(xiàn)。Aspect 是對象需要執(zhí)行的任何次要任務(wù)。每個(gè)對象是 Java 都有一個(gè)專門的職責(zé),除此之外它可能需要做一些次要的事情,比如日志記錄或異常處理。面向方面的編程提供了一種機(jī)制,用于將這些次要職責(zé)從對象中取出,并將它們賦予使原始對象加倍的代理對象。
可以在Spring AOP Repo中找到。
春季方面
我們已經(jīng)了解了什么是面向方面的編程。Spring Aspects 提供了一種與其他面向方面編程實(shí)現(xiàn)(如 AspecJ)集成的統(tǒng)一方式。
可以在Spring Aspects Repo中找到。
彈簧儀表
Spring Instrumentation模塊為類檢測提供支持。該儀器用于監(jiān)視應(yīng)用程序的性能。它監(jiān)視各種對象以診斷應(yīng)用程序問題并記錄它們。
可以在Spring Instrument Repo中找到。
春季消息
Spring Messaging提供與消息系統(tǒng)集成的支持。該模塊提供了與各種消息傳遞服務(wù)交互的簡化和統(tǒng)一的方式。
可以在Spring Messaging Repo中找到。
概括
在本文中,我們學(xué)習(xí)了 Spring 框架架構(gòu)。Spring 是一個(gè)具有多個(gè)模塊的巨大框架。Core Container 是 Spring 中一切的支柱,所有其他模塊都依賴于 Core。除了核心,我們還查看了 Spring Web、Spring Data Access 和一些雜項(xiàng)模塊。