AVt天堂网 手机版,亚洲va久久久噜噜噜久久4399,天天综合亚洲色在线精品,亚洲一级Av无码毛片久久精品

當前位置:首頁 > 科技  > 軟件

Spring Boot是如何處理HTTP請求的?

來源: 責編: 時間:2023-09-20 21:55:25 276觀看
導讀在Spring Boot中創(chuàng)建基本的REST控制器是個簡單的過程。通過使用一些注釋,您可以封裝所需的邏輯,讓Spring Boot處理其余部分。但是,這背后究竟發(fā)生了什么?本文將詳細介紹Spring Boot如何處理HTTP請求的復雜性。探索設置首

在Spring Boot中創(chuàng)建基本的REST控制器是個簡單的過程。通過使用一些注釋,您可以封裝所需的邏輯,讓Spring Boot處理其余部分。但是,這背后究竟發(fā)生了什么?本文將詳細介紹Spring Boot如何處理HTTP請求的復雜性。Bfk28資訊網(wǎng)——每日最新資訊28at.com

Bfk28資訊網(wǎng)——每日最新資訊28at.com

探索設置

首先,來看一個示例控制器類:Bfk28資訊網(wǎng)——每日最新資訊28at.com

@RestControllerclass GreetingController {    @GetMapping("/greeting")    fun getGreeting() = "hi there"}

在這個例子中,有一個單一的端點,返回一個基本的字符串響應。要設置您的項目,請將以下依賴項添加到build.gradle文件中:Bfk28資訊網(wǎng)——每日最新資訊28at.com

implementation("org.springframework.boot:spring-boot-starter-web")

現(xiàn)在,使用Apache Tomcat運行應用程序。Bfk28資訊網(wǎng)——每日最新資訊28at.com

./gradlew bootRun

Apache Tomcat

Spring Boot為我們啟動了一個嵌入式Tomcat Web服務器,默認情況下監(jiān)聽8080端口:Bfk28資訊網(wǎng)——每日最新資訊28at.com

2023-09-10T19:07:52.604  INFO 8712 --- [           main] o.s.b.w.embedded.tomcat.TomcatWebServer  : Tomcat started on port(s): 8080 (http) with context path ''

Apache Tomcat是一個開源Java Servlet容器,實現(xiàn)了關鍵的Java企業(yè)(現(xiàn)在是Jakarta EE)標準,包括Jakarta Servlet、Jakarta Server Pages和Jakarta WebSocket。Bfk28資訊網(wǎng)——每日最新資訊28at.com

在Spring中,它啟動了一個Servlet容器,該容器監(jiān)聽默認的TCP端口8080,用于接收請求。一旦有請求到達,我們可以觀察到接收者和工作線程開始處理請求:Bfk28資訊網(wǎng)——每日最新資訊28at.com

Bfk28資訊網(wǎng)——每日最新資訊28at.com

接受者線程負責接收傳入請求并將其放入隊列中。但是,如果隊列達到其容量,則接受者將拒絕其他請求。另一方面,工作線程從接受者隊列中檢索請求,并在其專用線程堆棧中處理每個請求。Bfk28資訊網(wǎng)——每日最新資訊28at.com

我們目前有1個接受者和10個工作線程。但是,請注意這些值可能會因我們的特定配置而有所不同。由于我們沒有修改任何配置參數(shù),因此Spring已根據(jù)Spring Boot文檔中概述的默認值自動為我們設置了默認值。Bfk28資訊網(wǎng)——每日最新資訊28at.com

需要考慮的一些重要配置參數(shù)是:Bfk28資訊網(wǎng)——每日最新資訊28at.com

server.tomcat.accept-count=100 # Maximum queue length for incoming connection requests when all possible request processing threads are in use.server.tomcat.max-connections=10000 # Maximum number of connections that the server accepts and processes at any given time.server.tomcat.max-threads=200 # Maximum amount of worker threads.server.tomcat.min-spare-threads=10 # Minimum amount of worker threads.

此外,值得注意的是,我們使用非阻塞IO(NIO)線程。這意味著單個線程可以管理多個連接并維護它們的持續(xù)時間,該持續(xù)時間由keepAlive參數(shù)確定。Bfk28資訊網(wǎng)——每日最新資訊28at.com

要查看請求處理過程,請向我們的端點發(fā)送HTTP請求:Bfk28資訊網(wǎng)——每日最新資訊28at.com

curl localhost:8080/greeting

您將觀察到其中一個工作線程處理請求:Bfk28資訊網(wǎng)——每日最新資訊28at.com

Bfk28資訊網(wǎng)——每日最新資訊28at.com

Dispatcher servlet

接下來介紹如何將請求路由到我們的控制器邏輯。Bfk28資訊網(wǎng)——每日最新資訊28at.com

在請求之后,您會注意到一個日志條目:Bfk28資訊網(wǎng)——每日最新資訊28at.com

2023-09-10T19:07:58.604  INFO 23948 --- [nio-8080-exec-1] o.a.c.c.C.[Tomcat].[localhost].[/]       : Initializing Spring DispatcherServlet 'dispatcherServlet'2023-09-10T19:07:58.292  INFO 23948 --- [nio-8080-exec-1] o.s.web.servlet.DispatcherServlet        : Initializing Servlet 'dispatcherServlet'2023-09-10T19:07:58.293  INFO 23948 --- [nio-8080-exec-1] o.s.web.servlet.DispatcherServlet        : Completed initialization in 1 ms

這表明已實例化DispatcherServlet類的一個實例來處理請求。 您可以在org.springframework.web.servlet包中輕松找到此類。在此包中,您將發(fā)現(xiàn)DispatcherServlet實際上是擴展HttpServlet類的標準servlet。它作為所有Spring基礎架構的入口點,在由Web服務器管理的Web應用程序中使用。Bfk28資訊網(wǎng)——每日最新資訊28at.com

在Spring Web應用程序中,在配置中定義DispatcherServlet時,Apache Tomcat容器將初始化此servlet并將我們的請求委托給它,利用其工作線程之一。Bfk28資訊網(wǎng)——每日最新資訊28at.com

請求映射

DispatcherServlet中的中心方法是doService方法,它接收并指導我們的請求。Bfk28資訊網(wǎng)——每日最新資訊28at.com

您可能會想知道,它如何確定適當?shù)念悂硖幚泶颂囟ㄕ埱蟆?span style="display:none">Bfk28資訊網(wǎng)——每日最新資訊28at.com

答案在于它的handlerMappings字段,該字段存儲實現(xiàn)HandlerMapping接口的類集合。在DispatcherServlet實例化期間,此字段由initHandlerMappingsmethod初始化。Bfk28資訊網(wǎng)——每日最新資訊28at.com

每當我們使用方法級別的@RequestMapping注釋定義新的@Controller類時,Spring都會自動生成一個RequestMappingInfo類。然后,將此生成的信息無縫地合并到handlerMappings屬性中。隨后,我們的DispatcherServlet利用此數(shù)據(jù)進行精確的請求路由。Bfk28資訊網(wǎng)——每日最新資訊28at.com

讓我們在調試模式下更仔細地查看這個列表,您確實會找到我們的映射:Bfk28資訊網(wǎng)——每日最新資訊28at.com

Bfk28資訊網(wǎng)——每日最新資訊28at.com

其余邏輯非常簡單。利用getHandler方法,DispatcherServlet在循環(huán)中迭代所有映射:Bfk28資訊網(wǎng)——每日最新資訊28at.com

2023-09-10T19:07:58.604  INFO 23948 --- [nio-8080-exec-1] o.a.c.c.C.[Tomcat].[localhost].[/]       : Initializing Spring DispatcherServlet 'dispatcherServlet'2023-09-10T19:07:58.292  INFO 23948 --- [nio-8080-exec-1] o.s.web.servlet.DispatcherServlet        : Initializing Servlet 'dispatcherServlet'2023-09-10T19:07:58.293  INFO 23948 --- [nio-8080-exec-1] o.s.web.servlet.DispatcherServlet        : Completed initialization in 1 ms

一旦它確定了合適的處理程序,您可以在調試模式下觀察處理程序類:Bfk28資訊網(wǎng)——每日最新資訊28at.com

Bfk28資訊網(wǎng)——每日最新資訊28at.com

DispatcherServlet仍然將請求傳遞給找到的處理程序。這就是它的工作原理。Bfk28資訊網(wǎng)——每日最新資訊28at.com

總結

本文介紹了在Spring Boot應用程序中處理HTTP請求的內部工作原理。了解了Spring Boot如何初始化Tomcat servlet容器、管理工作線程以及使用DispatcherServlet將請求路由到適當?shù)目刂破鞣椒ā?span style="display:none">Bfk28資訊網(wǎng)——每日最新資訊28at.com

本文鏈接:http://www.tebozhan.com/showinfo-26-10582-0.htmlSpring Boot是如何處理HTTP請求的?

聲明:本網(wǎng)頁內容旨在傳播知識,若有侵權等問題請及時與本網(wǎng)聯(lián)系,我們將在第一時間刪除處理。郵件:2376512515@qq.com

上一篇: 七種實現(xiàn)Web實時消息推送的方案

下一篇: 深入理解Java內存工作原理

標簽:
  • 熱門焦點
  • Redmi Pad評測:紅米充滿野心的一次嘗試

    從Note系列到K系列,從藍牙耳機到筆記本電腦,紅米不知不覺之間也已經(jīng)形成了自己頗有競爭力的產(chǎn)品體系,在中端和次旗艦市場上甚至要比小米新機的表現(xiàn)來得更好,正所謂“大丈夫生居
  • 6月安卓手機好評榜:魅族20 Pro蟬聯(lián)冠軍

    性能榜和性價比榜之后,我們來看最后的安卓手機好評榜,數(shù)據(jù)來源安兔兔評測,收集時間2023年6月1日至6月30日,僅限國內市場。第一名:魅族20 Pro好評率:95%5月份的時候魅族20 Pro就是
  • iPhone賣不動了!蘋果股價創(chuàng)年內最大日跌幅:市值一夜蒸發(fā)萬億元

    8月5日消息,今天凌晨美股三大指數(shù)高開低走集體收跌,道指跌0.41%;納指跌0.36%;標普500指數(shù)跌0.52%。熱門科技股也都變化極大,其中蘋果報181.99美元,跌4.8%,創(chuàng)
  • 企業(yè)采用CRM系統(tǒng)的11個好處

    客戶關系管理(CRM)軟件可以為企業(yè)提供很多的好處,從客戶保留到提高生產(chǎn)力。  CRM軟件用于企業(yè)收集客戶互動,以改善客戶體驗和滿意度。  CRM軟件市場規(guī)模如今超過580
  • 三言兩語說透柯里化和反柯里化

    JavaScript中的柯里化(Currying)和反柯里化(Uncurrying)是兩種很有用的技術,可以幫助我們寫出更加優(yōu)雅、泛用的函數(shù)。本文將首先介紹柯里化和反柯里化的概念、實現(xiàn)原理和應用
  • 如何使用JavaScript創(chuàng)建一只圖像放大鏡?

    譯者 | 布加迪審校 | 重樓如果您曾經(jīng)瀏覽過購物網(wǎng)站,可能遇到過圖像放大功能。它可以讓您放大圖像的特定區(qū)域,以便瀏覽。結合這個小小的重要功能可以大大改善您網(wǎng)站的用戶體驗
  • 這款新興工具平臺,讓你的電腦效率翻倍

    隨著信息技術的發(fā)展,我們獲取信息的渠道越來越多,但是處理信息的效率卻成為一個瓶頸。于是各種工具應運而生,都在爭相解決我們的工作效率問題。今天我要給大家介紹一款效率
  • 從零到英雄:高并發(fā)與性能優(yōu)化的神奇之旅

    作者 | 波哥審校 | 重樓作為公司的架構師或者程序員,你是否曾經(jīng)為公司的系統(tǒng)在面對高并發(fā)和性能瓶頸時感到手足無措或者焦頭爛額呢?筆者在出道那會為此是吃盡了苦頭的,不過也得
  • 華為HarmonyOS 4升級計劃公布:首批34款機型今日開啟公測

    8月4日消息,今天下午華為正式發(fā)布了HarmonyOS 4系統(tǒng),在更流暢的前提下,還帶來了不少新功能,UI設計也有變化,會讓手機煥然一新。華為宣布,首批機型將會在
Top