欧美一级特黄大片做受成人-亚洲成人一区二区电影-激情熟女一区二区三区-日韩专区欧美专区国产专区

SpringMVC源碼分析

Pogy原創(chuàng),未經(jīng)允許,請勿轉(zhuǎn)載?。。?/strong>

創(chuàng)新互聯(lián)是一家以網(wǎng)絡技術公司,為中小企業(yè)提供網(wǎng)站維護、成都做網(wǎng)站、網(wǎng)站制作、網(wǎng)站備案、服務器租用、域名申請、軟件開發(fā)、微信小程序定制開發(fā)等企業(yè)互聯(lián)網(wǎng)相關業(yè)務,是一家有著豐富的互聯(lián)網(wǎng)運營推廣經(jīng)驗的科技公司,有著多年的網(wǎng)站建站經(jīng)驗,致力于幫助中小企業(yè)在互聯(lián)網(wǎng)讓打出自已的品牌和口碑,讓企業(yè)在互聯(lián)網(wǎng)上打開一個面向全國乃至全球的業(yè)務窗口:建站電話聯(lián)系:18980820575

springMVC是一個建立在spring框架基礎之上的一個web層框架,它負責發(fā)送每個請求到合適的處理程序,使用視圖來最終返回響應結果的概念。

 

SpringMVC最重要的一個類是DispatchServlet這個類,當我們打開這個源碼,感到一臉蒙蔽。但是坐下來冷靜一下看看,發(fā)現(xiàn),這個東西竟然繼承了一些類

SpringMVC源碼分析

跟過去看看

SpringMVC源碼分析

好像也沒啥線索,繼續(xù)跟

SpringMVC源碼分析

這時有了重大發(fā)現(xiàn),發(fā)現(xiàn)這個DispatchServlet終歸結底還是繼承了HttpServlet,那么我們就可以按照普通的servlet的生命周期來分析它了。

Servlet的生命周期大家都還記得吧,不記得沒關系,我來簡單列一下

1.     首先tomcat啟動的時候會去查詢web.xml中的配置文件找到servlet的配置,然后會通過new關鍵字創(chuàng)建這個servlet的實例。

2.     然后調(diào)用這個servlet的init方法去初始化,然后把這個servlet放入容器中管理,等待使用。

3.     當容器關閉時,tomcat會調(diào)用這個servlet的destroy方法來做一些善后工作。

Ok,下面我們就找init方法吧,看看這里面都干了些什么吧

SpringMVC源碼分析

這里面沒有什么太復雜的邏輯,就是把配置DispatchServlet配置參數(shù)加載到內(nèi)存中,以供spring使用。有的朋友就問了,什么參數(shù)

SpringMVC源碼分析主要就是這里面調(diào)用了initServletBean方法,這個方法在這個類中是空的,而它的子類實現(xiàn)了它,springmvc中用了很多類似的設計模式,叫模板方法模式。簡單講就是在父類中寫好,你要調(diào)用哪些方法,我在子類中去實現(xiàn),這樣就按照了父類的邏輯順序調(diào)用了相應的方法,而且子類可以有不同的實現(xiàn)。

好,下面我么就找哪個子類實現(xiàn)了這個initServletBean方法吧,跟我走。。。

看看這個HttpServletBean的繼承體系如下

SpringMVC源碼分析

先找FrameworkServlet

我們尋尋覓覓,果然沒猜錯,方法的實現(xiàn),寫在了子類,而且還不少,我來分析下吧

SpringMVC源碼分析

略過日志記錄往下走

調(diào)用了當前類中寫的一個方法initWebApplicationContext方法,這個方法就很重要了,坐下來,喝杯茶,慢慢品嘗spring這道美味可口的大餐。

先把源碼粘上來,


第一步spring通過工具類獲取父級WebApplicationContext容器,有的朋友問了,這個父級容器哪來的,何時創(chuàng)建的。

就是在這個監(jiān)聽器運行的時候創(chuàng)建的,我們知道web服務器啟動的時候,3大組件的創(chuàng)建順序是Listener>Filter >Servlet。

所以這里是可以獲取到父級容器的。當然也可以獲取不到這種情況就不討論了,因為,不可能說你用springMVC而不用spring框架的。

SpringMVC源碼分析

這里有幾個if判斷,我已經(jīng)標號了,給大家分析一下執(zhí)行流。

首先webApplicationContext一定是空的,為什么,因為你剛啟動,肯定是空的。所以第一個if暫時不會執(zhí)行。進入到第二個if了,這里調(diào)用了findWebApplicationContext,其實這里也會返回一個null,從這個findwebApplicationContext名稱就知道,它只查找并不創(chuàng)建。把源碼附上,大家看看

SpringMVC源碼分析

因此wac還是空的,所以進入第三個if語句,我們進到createWabApplicationContext方法中一探究竟。

SpringMVC源碼分析

這里的1號代碼塊中是日志,2號代碼塊中式判斷的,3號代碼塊是創(chuàng)建一個可配置的web應用上下文,也就是web容器,4號代碼塊是初始化一下這個容器。比如設置之前的rootContext為父級容器。

最后把這個創(chuàng)建的容器返回,至此,我們的springMVC容器就這樣誕生了。但是還沒結束,在Framework的initWebApplicationContext()方法里還有if,我把它粘上來

接著之前的if序號編號

SpringMVC源碼分析

看看這個字段的初始值  

SpringMVC源碼分析

所以這個onRefresh()方法是要執(zhí)行的,跟進去發(fā)現(xiàn)空實現(xiàn),意料之內(nèi)的事啦,沒關系的,模板方法模式嘛,找子類,有線索,

SpringMVC源碼分析

這個方法又調(diào)用了一個initStrategies(。。)方法,這個方法干了什么勾當 ,跟進去看看

這里我直接加上注釋了

SpringMVC源碼分析

這里我就只跟一個進去看看吧,initMultipartResolver(context),進去看看

SpringMVC源碼分析

注意我畫線的這個段代碼,大家考慮有沒有問題啊,仔細思考哦

當然有問題,我們又沒有在容器中注入這個解析器,它怎么能get到呢,出鬼了。

嘻嘻

本文標題:SpringMVC源碼分析
轉(zhuǎn)載來源:http://aaarwkj.com/article24/gdidce.html

成都網(wǎng)站建設公司_創(chuàng)新互聯(lián),為您提供軟件開發(fā)、服務器托管、網(wǎng)站策劃、響應式網(wǎng)站、建站公司、網(wǎng)站設計

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)

黑寡妇精品欧美一区二区毛| 亚洲精品伦理视频在线| 97资源视频在线播放| 午夜福利视频欧美成人| 日本一区二区三区在线观看视频| 国产精品久久综合网| 2004年亚洲中文字幕| 国产欧美成人精品第一区| 伊人婷婷综合激情网| 亚洲s码在线一区二区| 久久久久久这里都是精品| 国产福利成人一区二区| 国产日韩欧美另类专区| 午夜少妇久久久久久久久| 国产精品国产三级专区| 国产传媒网站在线观看| 日韩三级黄片在线观看| 日韩欧美人妻一二三四区| 色国产精品一区在线观看| 日韩激情一区二区三区| 夜色一区二区av人片| 星空无限传媒国产最新| 日韩欧美中文字幕区| 国产精品成人大片在线播放| 国产成人精品久久一区二区| 亚洲欧美日韩综合一区| 在线观看男人的天堂av| 日本人妻丰满熟妇久久| 欧美亚洲精品一区在线观看| 成人嚼牙特别黑黄怎么办| av毛片天堂在线观看| 夜夜草av一区二区三区| 久久精品国产亚洲av麻豆她| 内射小美女阴户毛片在线| 日本黄网色三级三级三级| 亚洲欧美成人综合网站| 国产黄片大秀在线观看| 精品国产精品中文字幕| 成人高清乱码一区二区三区| 日本一区二区三区精彩视频| 亚洲天堂男人的天堂狠狠操|