您的“關注”和“點贊”,是信任,是認可,是支持,是動力…
如意見相佐,可留言。
本人必將竭盡全力試圖做到準確和全面,終其一生進行修改補充更新。
文章目錄
1 Spring 框架概述
可以看一下官網給出的介紹,如下圖所示:
Spring 是一個主流的 Java Web 開發框架,該框架是一個輕量級的應用框架,具有很高的凝聚力和吸引力。Spring使每個人都可以更快,更輕鬆,更安全地進行Java編程。Spring對速度,簡單性和生產率的關注使其成爲世界上最受歡迎的 Java框架。
Spring 是分層的 Java SE/EE full-stack 輕量級開源框架,以 IoC(Inverse of Control,控制反轉)和 AOP(Aspect Oriented Programming,面向切面編程)爲內核,使用基本的 JavaBean 完成以前只可能由 EJB 完成的工作,取代了 EJB 臃腫和低效的開發模式。
在實際開發中,通常服務器端採用三層體系架構,分別爲表現層(web)、業務邏輯層(service)、持久層(dao)。Spring 對每一層都提供了技術支持,在表現層提供了與 Struts2 框架的整合,在業務邏輯層可以管理事務和記錄日誌等,在持久層可以整合 Hibernate 和 JdbcTemplate 等技術。
2 Spring 的優點
Spring 框架的主要優點具體如下所示:
-
Spring 無處不在
Spring靈活的庫受到全世界開發人員的信任。Spring每天爲數百萬終端用戶提供愉快的體驗——無論是流媒體電視、聯網汽車、在線購物,還是其他無數的創新解決方案。Spring也有來自所有科技領域的巨頭的貢獻,包括阿里巴巴、亞馬遜(Amazon)、谷歌、微軟(Microsoft)等等。 -
Spring 是易擴展的,方便集成各種優秀框架
Spring靈活而全面的擴展集和第三方庫讓開發人員可以構建幾乎任何可以想象得到的應用程序。在其核心,Spring框架的控制反轉(IoC)和依賴項注入(DI)特性爲廣泛的特性和功能集提供了基礎。無論您是爲web構建安全的、反應性的、基於雲的微服務,還是爲企業構建複雜的流數據流,Spring都有工具可以提供幫助。 -
方便解耦,易於開發(簡化開發)
Spring 就是一個大工廠,可以將所有對象的創建和依賴關係的維護交給 Spring 管理。 -
Spring 速度快
Spring 的工程師非常關心性能。在 Spring 中,默認情況下,您會注意到快速啓動、快速關閉和優化執行。Spring 項目也越來越多地支持反應式(非阻塞)編程模型,以獲得更高的效率。開發人員的生產力是 Spring 的超能力。與其他競爭範例相比,Spring Boot 幫助開發人員輕鬆構建應用程序,而且工作量要少得多。嵌入式 web 服務器、自動配置和“胖罐”幫助您快速入門,而 Spring DevTools 中的 LiveReload 等創新意味着開發人員可以比以前更快地迭代。您甚至可以在幾秒鐘內啓動一個新的 Spring 項目,Spring Initializr 位於 start. Spring .io。 -
Spring 是安全的
Spring在快速和負責地處理安全問題方面有可靠的記錄。Spring提交者與安全專業人員一起工作,修補和測試任何報告的漏洞。第三方依賴關係也被密切監視,並定期發佈更新,以幫助儘可能地保證數據和應用程序的安全性。此外,Spring Security使您更容易與行業標準的安全方案集成,並交付默認安全的可靠解決方案。 -
Spring 社區很龐大,備受支持
Spring 社區是一個龐大的、全球性的、多樣化的社區,跨越了所有年齡和能力的人,從完全的初學者到經驗豐富的專業人士。無論你在旅途的哪個地方,你都可以找到你需要的支持和資源來幫助你進入下一個階段:快速入門、指南和教程、視頻、聚會、支持,甚至是正式的培訓和認證。
Spring 框架的其他優點具體如下所示:
- 方便程序的測試
Spring 支持 JUnit4,可以通過註解方便地測試 Spring 程序。 - AOP 編程的支持
Spring 提供面向切面編程,可以方便地實現對程序進行權限攔截和運行監控等功能。 - 聲明式事務的支持
只需要通過配置就可以完成對事務的管理,而無須手動編程。
3 Spring 的應用領域
Spring 可以應用於微服務(Microservices)、響應式編程(Reactive)、雲(Cloud)、網絡應用(Web app)、無服務器(Serverless)、事件驅動(Event Driven)、批處理(Batch)等任何 Java 應用的開發中。
4 Spring 體系結構
4.1 Spring 體系結構概述
Spring 框架採用分層架構,根據不同的功能被劃分成了多個模塊,這些模塊大體可分爲 Data Access/Integration 層
、Web 層
、AOP 層
、Aspects 層
、Instrumentation 層
、Messaging 層
、Core Container 層
、 Test 層
,這些模塊可以滿足一切企業級應用開發的需求,在開發過程中可以根據需求有選擇性地使用所需要的模塊。
Spring 體系結構圖如下所示。
4.2 各個模塊介紹
(1)Data Access/Integration(數據訪問/集成)層
數據訪問/集成層包括 JDBC、ORM、OXM、JMS 和 Transactions 模塊,具體介紹如下所示:
- JDBC 模塊:提供了一個 JDBC 的抽象層,大幅度減少了在開發過程中對數據庫操作的代碼。
- ORM 模塊:對流行的對象關係映射 API,包括 JPA、JDO、Hibernate 和 iBatis 提供了的集成層。
- OXM 模塊:提供了一個支持對象/XML 映射的抽象層實現,如 JAXB、Castor、XMLBeans、JiBX 和 XStream。
- JMS 模塊:指 Java 消息服務,包含的功能爲生產和消費的信息。
- Transactions 事務模塊:支持編程和聲明式事務管理實現特殊接口類,併爲所有的 POJO。
(2)Web 層
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 模塊的功能。
(3)Core Container(核心容器)層
Spring 的核心容器是其他模塊建立的基礎,由 Beans 模塊、Core 核心模塊、Context 上下文模塊和 Expression Language 表達式語言模塊組成,具體介紹如下所示:
- Beans 模塊:提供了 BeanFactory,是工廠模式的經典實現(很成熟的實現),Spring 將管理對象稱爲 Bean。
- Core 核心模塊:提供了 Spring 框架的基本組成部分,包括 IoC 和 DI 功能。
- Context 上下文模塊:建立在覈心和 Beans 模塊的基礎之上,它是訪問定義和配置任何對象的媒介。ApplicationContext 接口是上下文模塊的焦點。
- Expression Language 模塊:是運行時查詢和操作對象圖的強大的表達式語言。
(4)其他模塊
Spring的其他模塊還有 AOP、Aspects、Instrumentation 以及 Test 模塊,具體介紹如下所示:
- AOP 模塊:提供了面向切面編程實現,允許定義方法攔截器和切入點,將代碼按照功能進行分離,以降低耦合性。
- Aspects 模塊:提供與 AspectJ 的集成,是一個功能強大且成熟的面向切面編程(AOP)框架。
- Instrumentation 模塊:提供了類工具的支持和類加載器的實現,可以在特定的應用服務器中使用。
- Test 模塊:支持 Spring 組件,使用 JUnit 或 TestNG 框架的測試。
5 Spring 目錄結構
5.1 Spring 框架下載
目前 Spring 框架的最新版本是5.2.6
,可以去官網下載 。
官網下載地址:
https://repo.spring.io/webapp/#/artifacts/browse/tree/General/libs-release-local/org/springframework/spring/5.2.6.RELEASE/spring-5.2.6.RELEASE-dist.zip
如下圖所示,點擊Download
下載名稱爲 spring-5.2.6.RELEASE-dist.zip
的壓縮包。
5.2 Spring 框架目錄結構介紹
下載完成後,解壓文件 spring-5.2.6.RELEASE-dist.zip
可以得到spring-framework-5.2.6.RELEASE
文件夾,如下圖所示。
打開spring-framework-5.2.6.RELEASE
文件夾,可以看到如下圖所示內容。
對上圖中的目錄說明,
docs
目錄:Spring 的 API 文檔和開發規範。libs
目錄:開發需要的 JAR 包和源碼包。schema
目錄:開發所需要的 schema 文件,在這些文件中定義了 Spring 相關配置文件的約束。
6 Spring 框架的四個基礎 JAR 包
在 libs
目錄中,包含了 Spring 框架提供的所有 JAR 文件,其中有四個 JAR 文件是 Spring 框架的基礎包,分別對應 Spring 容器的四個模塊,具體如下所示:
spring-beans-5.2.6.RELEASE.jar
:所有應用都要用到的,它包含訪問配置文件、創建和管理 bean 以及進行 Inversion of Control(IoC)或者 Dependency Injection(DI)操作相關的所有類。spring-context-5.2.6.RELEASE.jar
:Spring 提供在基礎 IoC 功能上的擴展服務,此外還提供許多企業級服務的支持,如郵件服務、任務調度、JNDI 定位、EJB 集成、遠程訪問、緩存以及各種視圖層框架的封裝等spring-core-5.2.6.RELEASE.jar
:包含 Spring 框架基本的核心工具類,Spring 其他組件都要用到這個包中的類,是其他組件的基本核心。spring-expression-5.2.6.RELEASE.jar
:定義了 Spring 的表達式語言。
7 使用 Spring 框架時,必須導入的 JAR 包
在使用 Spring 框架開發時,除了 Spring 自帶的 JAR 包以外,還需要一個第三方 JAR 包 commons-logging-1.2.jar
處理日誌信息。
官網下載地址:
http://commons.apache.org/proper/commons-logging/download_logging.cgi
進入官網之後,找到commons-logging-1.2-bin.zip
,點擊就可以下載。
也就是說在使用 Spring 框架時,我們至少要將 Spring 框架的四個基礎 JAR 包以及commons-logging-1.2.jar
包複製到項目的 libs
目錄,併發布到類路徑中即可。如下圖所示: