Spring 框架介紹 [Spring 優點][Spring 應用領域][體繫結構][目錄結構][基礎 jar 包]

来源:https://www.cnblogs.com/manongajie/archive/2020/05/08/12853287.html
-Advertisement-
Play Games

Spring 是一個主流的 Java Web 開發框架,該框架是一個輕量級的應用框架,具有很高的凝聚力和吸引力。Spring使每個人都可以更快,更輕鬆,更安全地進行Java編程。Spring對速度,簡單性和生產率的關註使其成為世界上最受歡迎的 Java框架。 Spring 是分層的 Java SE/... ...


您的“關註”和“點贊”,是信任,是認可,是支持,是動力......

如意見相佐,可留言。
本人必將竭盡全力試圖做到準確和全面,終其一生進行修改補充更新。

目錄

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 處理日誌信息。

也就是說在使用 Spring 框架時,我們至少要將 Spring 框架的四個基礎 JAR 包以及commons-logging-1.2.jar包複製到項目的 libs 目錄,併發布到類路徑中即可。如下圖所示:

在這裡插入圖片描述

8 文章其他地址

8.1 微信公眾號:碼農阿傑

8.2 CSDN 博客

9 參考資料地址

9.1 spring

9.2 Artifact Repository Browser

9.3 Apache Commons


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...