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

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

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

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

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

IRp28資訊網——每日最新資訊28at.com

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

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

需要考慮的一些重要配置參數是:IRp28資訊網——每日最新資訊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)線程。這意味著單個線程可以管理多個連接并維護它們的持續時間,該持續時間由keepAlive參數確定。IRp28資訊網——每日最新資訊28at.com

要查看請求處理過程,請向我們的端點發送HTTP請求:IRp28資訊網——每日最新資訊28at.com

curl localhost:8080/greeting

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

IRp28資訊網——每日最新資訊28at.com

Dispatcher servlet

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

在請求之后,您會注意到一個日志條目:IRp28資訊網——每日最新資訊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包中輕松找到此類。在此包中,您將發現DispatcherServlet實際上是擴展HttpServlet類的標準servlet。它作為所有Spring基礎架構的入口點,在由Web服務器管理的Web應用程序中使用。IRp28資訊網——每日最新資訊28at.com

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

請求映射

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

您可能會想知道,它如何確定適當的類來處理此特定請求。IRp28資訊網——每日最新資訊28at.com

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

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

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

IRp28資訊網——每日最新資訊28at.com

其余邏輯非常簡單。利用getHandler方法,DispatcherServlet在循環中迭代所有映射:IRp28資訊網——每日最新資訊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

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

IRp28資訊網——每日最新資訊28at.com

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

總結

本文介紹了在Spring Boot應用程序中處理HTTP請求的內部工作原理。了解了Spring Boot如何初始化Tomcat servlet容器、管理工作線程以及使用DispatcherServlet將請求路由到適當的控制器方法。IRp28資訊網——每日最新資訊28at.com

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

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

上一篇: 七種實現Web實時消息推送的方案

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

標簽:
  • 熱門焦點
  • Raft算法:保障分布式系統共識的穩健之道

    1. 什么是Raft算法?Raft 是英文”Reliable、Replicated、Redundant、And Fault-Tolerant”(“可靠、可復制、可冗余、可容錯”)的首字母縮寫。Raft算法是一種用于在分布式系統
  • 十個簡單但很有用的Python裝飾器

    裝飾器(Decorators)是Python中一種強大而靈活的功能,用于修改或增強函數或類的行為。裝飾器本質上是一個函數,它接受另一個函數或類作為參數,并返回一個新的函數或類。它們通常用
  • 讓我們一起聊聊文件的操作

    文件【1】文件是什么?文件是保存數據的地方,是數據源的一種,比如大家經常使用的word文檔、txt文件、excel文件、jpg文件...都是文件。文件最主要的作用就是保存數據,它既可以保
  • WebRTC.Net庫開發進階,教你實現屏幕共享和多路復用!

    WebRTC.Net庫:讓你的應用更親民友好,實現視頻通話無痛接入! 除了基本用法外,還有一些進階用法可以更好地利用該庫。自定義 STUN/TURN 服務器配置WebRTC.Net 默認使用 Google 的
  • Python異步IO編程的進程/線程通信實現

    這篇文章再講3種方式,同時講4中進程間通信的方式一、 Python 中線程間通信的實現方式共享變量共享變量是多個線程可以共同訪問的變量。在Python中,可以使用threading模塊中的L
  • 新電商三兄弟,“抖快紅”成團!

    來源:價值研究所作 者:Hernanderz 隨著內容電商的概念興起,抖音、快手、小紅書組成的“新電商三兄弟”成為業內一股不可忽視的勢力,給阿里、京東、拼多多帶去了巨大壓
  • 華為HarmonyOS 4升級計劃公布:首批34款機型今日開啟公測

    8月4日消息,今天下午華為正式發布了HarmonyOS 4系統,在更流暢的前提下,還帶來了不少新功能,UI設計也有變化,會讓手機煥然一新。華為宣布,首批機型將會在
  • 聯想的ThinkBook Plus下一版曝光,鍵盤旁邊塞個平板

    ThinkBook Plus 是聯想的一個特殊筆記本類別,它在封面放入了一塊墨水屏,也給人留下了較為深刻的印象。據有人爆料,聯想的下一款 ThinkBook Plus 可能更特殊,它
  • 世界人工智能大會國際日開幕式活動在世博展覽館開啟

    30日上午,世界人工智能大會國際日開幕式活動在世博展覽館開啟,聚集國際城市代表、重量級院士專家、國際創新企業代表,共同打造人工智能交流平臺。上海市副市
Top