自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

一次搞清Spring 、Spring Boot、Spring Web MVC、Spring WebFlux

開發(fā) 前端
對于大多數(shù)新項目,使用Spring Boot并在必要時手動調整自動配置是有意義的。這尤其適用于部署在云端或基于容器的架構上的應用程序。對于構建大型的企業(yè)級Java應用程序,Spring可能是一個更好的選擇。

在軟件開發(fā)中,應用框架為代碼庫提供基礎設施支持,使編程更容易。Spring是Java領域最受歡迎的開源應用框架。Spring由多個模塊和附加組件組成,術語“Spring”通常用來指代整個Spring項目族。

對于剛接觸Spring生態(tài)系統(tǒng)的人來說,很容易混淆Spring、Spring Boot、Spring Web MVC和Spring WebFlux之間的區(qū)別。在本文為讀者介紹這些概念和區(qū)別。

1 Spring

Spring Framework是其他所有Spring項目的基礎,例如Spring Web MVC框架、Spring WebFlux響應式Web框架、用于自動配置和創(chuàng)建微服務的Spring Boot擴展。

下圖顯示了Spring生態(tài)系統(tǒng)元素之間的關系:

圖片圖片

Spring始于2003年,是一個輕量級的Java開發(fā)框架,用于幫助企業(yè)環(huán)境中采用和應用Java。Spring提供了對不同應用架構的基本支持。該框架涵蓋了消息傳遞、事務數(shù)據(jù)和持久化以及Web。Spring還包括兩個Web框架:Spring MVC和Spring WebFlux。

該框架“為現(xiàn)代基于Java的企業(yè)應用程序提供了全面的編程和配置模型”,無論最終部署環(huán)境如何。Spring的一個關鍵要素是基礎設施支持。將其視為企業(yè)應用程序的“管道提供者”,使開發(fā)人員可以專注于更有價值的工作,確定業(yè)務邏輯。

1.1 Spring的主要特性

Spring的核心特性之一是依賴注入(一種應用反轉原則的實現(xiàn)方式)。

控制反轉(IoC)是一種軟件設計模式,使應用程序的定制部分可以從通用框架中獲取控制流。通過IoC,開發(fā)人員可以將通用任務委托給可重用的庫,而不是自己編寫定制代碼來調用。依賴注入是IoC的一種實現(xiàn)方式,允許開發(fā)人員為對象提供其所依賴的其他對象,從而實現(xiàn)對象之間的解耦。這使得在單元測試中使用存根和模擬變得更加容易,從而方便對這些類進行測試。

與Spring相關的一個關鍵術語是“bean”的概念。Bean是應用程序中由Spring的IoC容器實例化、組裝和管理的對象。通過依賴注入,Spring的容器將負責在創(chuàng)建bean時注入所有所需的依賴關系。在配置和規(guī)范應用程序邏輯時,Spring的一個獨特特性是將依賴關系配置和規(guī)范與應用程序的邏輯解耦。

Spring非常適用于構建無服務器應用程序、異步應用程序和可擴展的微服務,安全性是其中的一個重點。該框架包含了促進應用程序開發(fā)的模塊和功能?;旧希琒pring包含了現(xiàn)代Web應用程序所需的所有構建模塊,包括:

  • 管理身份驗證和授權
  • 提供面向方面的編程框架
  • 遵循MVC原則
  • 管理事務
  • 管理對關系數(shù)據(jù)庫和映射器的數(shù)據(jù)訪問(Spring還支持NoSQL數(shù)據(jù)庫)
  • 提供單元測試和集成測試支持

Spring還包括兩種類型的Web框架:基于Servlet的Spring Web MVC框架和Spring WebFlux響應式Web框架。在下文中,了解更多關于Web框架的內容。

1.2 使用Spring的優(yōu)勢

那么為什么Spring如此受歡迎?答案可以從Spring設計的原則中找到:它既輕量級又非常靈活,提供直觀的API,并提供向后兼容性,以便更容易進行維護。該框架支持應用程序開發(fā)的所有層次,通過依賴注入實現(xiàn)松耦合,并支持輕松進行測試。

Spring的其他好處包括:

  • 支持聲明式編程,例如在不描述控制流的情況下表達計算邏輯。
  • 通過XML和注釋配置提供配置Spring的靈活性,具體取決于您的選擇。
  • 通過Spring IoC或面向方面的編程(AOP)提供中間件服務,例如在開發(fā)分布式應用程序時。

2 Spring Web框架

如前所述,Spring提供了兩個Web框架:Spring Web MVC和Spring WebFlux。

Spring Web MVC是最初包含在Spring框架中的Web框架,專為Servlet API和Servlet容器設計。

后來添加的Spring WebFlux是一個響應式堆棧的Web框架。

Web MVC和WebFlux可以共存,并作為可選模塊工作,因此可以根據(jù)應用程序的要求使用其中一個或兩個都不使用。

2.1 Spring Web MVC

Spring Web MVC是Spring框架內經常使用的Web框架。MVC是Model-View-Controller的縮寫,用于設計Web應用程序的三個關鍵組件:

  • Model:設置規(guī)則和邏輯,并包含應用程序的數(shù)據(jù)結構。
  • View:定義UI邏輯,并生成用戶在Web瀏覽器中看到的HTML輸出。
  • Controller:該組件提供訪問應用程序行為的方式,通常通過服務接口來定義。它解釋用戶輸入,驗證它,并將其轉換為將由View組件呈現(xiàn)給用戶的模型。

Spring Web MVC的請求處理工作流程Spring Web MVC的請求處理工作流程

通過這些核心組件,Spring Web MVC可以高效地將業(yè)務邏輯、展示邏輯和導航邏輯分離,這在構建模塊化的Web應用程序時非常有用。

Spring Web MVC可以單獨使用,作為構建Java應用程序的Spring框架的一部分。然而,使用Spring Boot,這個過程將需要更少的手動配置,使其更快、更容易。

2.2 Spring WebFlux

Spring WebFlux是一個反應式且完全非阻塞的框架,能夠處理并發(fā)并實現(xiàn)高效擴展。在更復雜的應用程序中,反應性對于互操作性至關重要,這些應用程序需要高級別和功能豐富的API來組合異步邏輯。

WebFlux使用Reactor庫,該庫專注于服務器端Java,因此Reactor是一個核心依賴項。但是WebFlux實際上也可以通過Reactive Streams與其他反應式庫一起使用。

使用WebFlux的好處在于:

  • 支持多種服務器(包括Netty、Tomcat、Jetty、Undertow和Servlet容器)
  • 提供兩種編程模型的選擇(注解控制器和功能性Web端點)
  • 并允許選擇要使用的反應式庫(Reactor、RxJava或其他庫)。

3 Spring Boot

Spring Boot是Spring框架的擴展,自動配置了一系列所需元素。將Spring Boot視為傳統(tǒng)Spring的自動化版本。

使用Spring Boot可以輕松創(chuàng)建使用Spring框架的獨立的生產級應用程序。使用Spring Boot,無需擔心編寫設置應用程序的樣板配置,所有這些都會自動處理。

3.1 Spring Boot主要功能:

Spring Boot對Spring提供了一種見解,提供了“starter”依賴項和對Spring和第三方庫的自動配置,以便快速啟動。這使得Spring Boot成為從零開始引導Spring應用程序的強大工具。

Spring Boot基本上是Spring應用程序的項目初始化器,可以幫助開發(fā)人員開發(fā)用于網站和整個基于移動設備的應用程序的微服務。在檢查類路徑和配置的Bean后,Spring Boot會嘗試自動確定和添加丟失的元素。Spring Boot自動提供默認代碼和基于注解的配置,加速應用程序的開發(fā)。Spring Boot還提供了一系列可用于生產的功能,包括各種指標、健康檢查和外部化配置。

Spring Boot可以與流行的內嵌式Servlet容器(包括Tomcat、Jetty和Undertow)一起使用,但Spring Boot應用程序也可以部署到與Servlet 5.0+兼容的任何容器中。

3.2 使用Spring Boot的優(yōu)勢

Spring Boot的主要優(yōu)勢在于它提供了一種簡單而非??焖俚臉嫿ê筒渴饝贸绦虻姆绞健J褂盟兄跍p少代碼長度,并輕松獲得Spring框架的優(yōu)勢。

Spring Boot提供的自動配置節(jié)省了編寫代碼的時間和精力成本,減少了開發(fā)時間并簡化了配置。Spring Boot使你能夠以符合DevOps和云友好的方式構建應用程序。它易于啟動、管理和定制,并且不需要XML配置。

3.3 Spring Boot的缺點:

由于Spring Boot創(chuàng)建了許多未使用的依賴項,通常不適用于復雜的大型企業(yè)應用程序。這可能會導致部署文件變得很大,造成不必要的混亂。

將遺留系統(tǒng)替換為Spring Boot應用程序可能需要相當長的時間,并且成本可能超過收益。

3.4 Spring vs Spring Boot

應該使用純Spring還是Spring Boot?這取決于您的需求。

Spring Boot提供了自動配置和“合理的”默認設置,用于各種Spring組件,重點是構建REST API。Spring Boot的另一個優(yōu)點是,您不需要深入了解Spring就可以開始編寫簡單的應用程序(畢竟,大多數(shù)配置都是開箱即用的)。

對于大多數(shù)新項目,使用Spring Boot并在必要時手動調整自動配置是有意義的。這尤其適用于部署在云端或基于容器的架構上的應用程序。對于構建大型的企業(yè)級Java應用程序,Spring可能是一個更好的選擇。

責任編輯:武曉燕 來源: Java學研大本營
相關推薦

2023-09-04 11:52:53

SpringMVC性能

2020-03-24 09:54:57

SpringMVCWebFlux

2021-07-15 11:16:31

Spring WebWebFlux架構

2019-08-15 10:56:10

WebServletSpring mvc

2022-07-04 09:15:10

Spring請求處理流程

2023-02-09 08:01:12

核心組件非阻塞

2024-01-10 09:59:19

虛擬線程信息

2017-08-02 14:44:06

Spring Boot開發(fā)注解

2022-11-04 08:39:46

SpringWebFlux

2017-09-20 09:46:38

Spring BootSpring Clou內存

2022-11-18 08:31:56

Spring日志工具

2024-10-10 10:32:04

2017-10-17 15:14:33

Spring BooThymeleafWeb

2012-06-17 20:19:29

2009-01-03 14:39:04

ibmdwDojoMVC

2021-09-15 09:02:20

Spring 6Spring BootJava

2022-04-28 08:05:05

數(shù)據(jù)庫數(shù)據(jù)庫交互

2021-09-03 06:46:34

Spring 6pring Boot 項目

2017-07-20 09:23:32

Springjavacio

2022-02-17 13:39:09

AOP接口方式
點贊
收藏

51CTO技術棧公眾號