偷偷摘套内射激情视频,久久精品99国产国产精,中文字幕无线乱码人妻,中文在线中文a,性爽19p

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

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

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

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

1 Spring

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

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

圖片圖片

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

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

1.1 Spring的主要特性

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

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

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

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

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

Spring還包括兩種類型的Web框架:基于Servlet的Spring Web MVC框架和Spring WebFlux響應(yīng)式Web框架。在下文中,了解更多關(guān)于Web框架的內(nèi)容。

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

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

Spring的其他好處包括:

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

2 Spring Web框架

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

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

后來添加的Spring WebFlux是一個響應(yīng)式堆棧的Web框架。

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

2.1 Spring Web MVC

Spring Web MVC是Spring框架內(nèi)經(jīng)常使用的Web框架。MVC是Model-View-Controller的縮寫,用于設(shè)計(jì)Web應(yīng)用程序的三個關(guān)鍵組件:

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

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

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

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

2.2 Spring WebFlux

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

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

使用WebFlux的好處在于:

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

3 Spring Boot

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

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

3.1 Spring Boot主要功能:

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

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

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

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

Spring Boot的主要優(yōu)勢在于它提供了一種簡單而非??焖俚臉?gòu)建和部署應(yīng)用程序的方式。使用它有助于減少代碼長度,并輕松獲得Spring框架的優(yōu)勢。

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

3.3 Spring Boot的缺點(diǎn):

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

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

3.4 Spring vs Spring Boot

應(yīng)該使用純Spring還是Spring Boot?這取決于您的需求。

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

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

責(zé)任編輯:武曉燕 來源: Java學(xué)研大本營
相關(guān)推薦

2023-09-04 11:52:53

SpringMVC性能

2020-03-24 09:54:57

SpringMVCWebFlux

2021-07-15 11:16:31

Spring WebWebFlux架構(gòu)

2019-08-15 10:56:10

WebServletSpring mvc

2023-02-09 08:01:12

核心組件非阻塞

2022-07-04 09:15:10

Spring請求處理流程

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內(nèi)存

2022-11-18 08:31:56

Spring日志工具

2024-10-10 10:32:04

2017-10-17 15:14:33

Spring BooThymeleafWeb

2009-01-03 14:39:04

ibmdwDojoMVC

2012-06-17 20:19:29

2022-04-28 08:05:05

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

2021-09-03 06:46:34

Spring 6pring Boot 項(xiàng)目

2021-09-15 09:02:20

Spring 6Spring BootJava

2017-07-20 09:23:32

Springjavacio

2011-02-28 13:34:51

SpringMVC
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號