日韩成人免费在线_国产成人一二_精品国产免费人成电影在线观..._日本一区二区三区久久久久久久久不

當(dāng)前位置:首頁 > 科技  > 軟件

Spring Boot是如何處理HTTP請(qǐng)求的?

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

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

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

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

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

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

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

curl localhost:8080/greeting

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

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

Dispatcher servlet

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

在請(qǐng)求之后,您會(huì)注意到一個(gè)日志條目:W1n28資訊網(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

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

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

請(qǐng)求映射

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

您可能會(huì)想知道,它如何確定適當(dāng)?shù)念悂硖幚泶颂囟ㄕ?qǐng)求。W1n28資訊網(wǎng)——每日最新資訊28at.com

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

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

讓我們?cè)谡{(diào)試模式下更仔細(xì)地查看這個(gè)列表,您確實(shí)會(huì)找到我們的映射:W1n28資訊網(wǎng)——每日最新資訊28at.com

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

其余邏輯非常簡(jiǎn)單。利用getHandler方法,DispatcherServlet在循環(huán)中迭代所有映射:W1n28資訊網(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

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

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

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

總結(jié)

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

本文鏈接:http://www.www897cc.com/showinfo-26-10582-0.htmlSpring Boot是如何處理HTTP請(qǐng)求的?

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

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

下一篇: 深入理解Java內(nèi)存工作原理

標(biāo)簽:
  • 熱門焦點(diǎn)
  • Mate60手機(jī)殼曝光 致敬自己的經(jīng)典設(shè)計(jì)

    8月3日消息,今天下午博主數(shù)碼閑聊站帶來了華為Mate60的第三方手機(jī)殼圖,可以讓我們?cè)谡鏅C(jī)發(fā)布之前看看這款華為全新旗艦的大致輪廓。從曝光的圖片看,Mate 60背后攝像頭面積依然
  • 6月安卓手機(jī)性價(jià)比榜:Note 12 Turbo斷層式碾壓

    6月份有一個(gè)618,雖然這是京東周年慶的日子,但別的電商也都不約而同的跟進(jìn)了,反正促銷沒壞處,廠商和用戶都能滿意。618期間一些產(chǎn)品也出現(xiàn)了歷史低價(jià),那么各個(gè)價(jià)位段的產(chǎn)品性價(jià)比
  • Golang 中的 io 包詳解:組合接口

    io.ReadWriter// ReadWriter is the interface that groups the basic Read and Write methods.type ReadWriter interface { Reader Writer}是對(duì)Reader和Writer接口的組合,
  • 一年經(jīng)驗(yàn)在二線城市面試后端的經(jīng)驗(yàn)分享

    忠告這篇文章只適合2年內(nèi)工作經(jīng)驗(yàn)、甚至沒有工作經(jīng)驗(yàn)的朋友閱讀。如果你是2年以上工作經(jīng)驗(yàn),請(qǐng)果斷劃走,對(duì)你沒啥幫助~主人公這篇文章內(nèi)容來自 「升職加薪」星球星友 的投稿,坐
  • 一篇聊聊Go錯(cuò)誤封裝機(jī)制

    %w 是用于錯(cuò)誤包裝(Error Wrapping)的格式化動(dòng)詞。它是用于 fmt.Errorf 和 fmt.Sprintf 函數(shù)中的一個(gè)特殊格式化動(dòng)詞,用于將一個(gè)錯(cuò)誤(或其他可打印的值)包裝在一個(gè)新的錯(cuò)誤中。使
  • Python異步IO編程的進(jìn)程/線程通信實(shí)現(xiàn)

    這篇文章再講3種方式,同時(shí)講4中進(jìn)程間通信的方式一、 Python 中線程間通信的實(shí)現(xiàn)方式共享變量共享變量是多個(gè)線程可以共同訪問的變量。在Python中,可以使用threading模塊中的L
  • 零售大模型“干中學(xué)”,攀爬數(shù)字化珠峰

    文/侯煜編輯/cc來源/華爾街科技眼對(duì)于絕大多數(shù)登山愛好者而言,攀爬珠穆朗瑪峰可謂終極目標(biāo)。攀登珠峰的商業(yè)路線有兩條,一是尼泊爾境內(nèi)的南坡路線,一是中國(guó)境內(nèi)的北坡路線。相
  • 造車兩年股價(jià)跌六成,小米的估值邏輯變了嗎?

    如果從小米官宣造車后的首個(gè)交易日起持有小米集團(tuán)的股票,那么截至2023年上半年最后一個(gè)交易日,投資者將浮虧59.16%,同區(qū)間的恒生科技指數(shù)跌幅為52.78%
  • iQOO 11S評(píng)測(cè):行業(yè)唯一的200W標(biāo)準(zhǔn)版旗艦

    【Techweb評(píng)測(cè)】去年底,iQOO推出了“電競(jìng)旗艦”iQOO 11系列,作為一款性能強(qiáng)機(jī),該機(jī)不僅全球首發(fā)2K 144Hz E6全感屏,搭載了第二代驍龍8平臺(tái)及144Hz電競(jìng)
Top 主站蜘蛛池模板: 石柱| 湾仔区| 舟山市| 合水县| 聂拉木县| 西乌珠穆沁旗| 林西县| 峡江县| 龙泉市| 门源| 宁陕县| 长春市| 甘孜县| 车险| 南京市| 佛坪县| 灌南县| 清水河县| 望城县| 从江县| 固阳县| 塘沽区| 民丰县| 南皮县| 嵊泗县| 偏关县| 晋城| 崇明县| 文登市| 新乡县| 卫辉市| 泽州县| 石渠县| 阜阳市| 延川县| 安陆市| 万年县| 油尖旺区| 济阳县| 乐业县| 禄劝|