今天我給大家介紹一下Spring MVC的詳細執行流程。我把Spring MVC的執行流程劃分為三個階段,配置階段、初始化階段和運行階段。
我整理了一張完整的執行流程圖,需要高清圖的小伙伴可以私信我。下面詳細介紹每個階段的執行細節。
1、第一階段:配置階段
配置階段,主要是完成對xml配置和注解配置。
具體步驟如下:
首先,從web.xml開始,配置DispatcherServlet的url匹配規則和Spring主配置文件的加載路徑
然后,就是配置注解,比如@Controller、@Service、@Autowrited以及@RequestMApping等。
2、第二階段:初始化階段
初始化階段,主要是加載并解析配置信息以及IoC容器、DI操作和HandlerMapping的初始化。
具體步驟如下:
首先,Wer容器啟動以后,會由Web容器自動調用DispatcherServlet的init()方法。
然后,在init()方法中,會初始化IoC容器,IoC容器其實就是個Map。
緊接著,根據配置好的掃描包路徑,掃描出相關的類,并利用反射進行實例化,存放到IoC容器中。
緩存之后,Spring將再次迭代掃描IoC容器中的實例,給需要自動賦值的屬性自動賦值。哪些屬性需要自動賦值呢?比如加了@Autowrited的屬性。
最后,讀取@RequestMapping注解,獲得請求url,將url和Method建議一對一的映射關系并緩存起來。我們可以簡單粗暴地理解為緩存在一個Map中,它的Key就是url,它的值是Method。
3、第三階段:運行階段
運行階段,在Spring啟動以后,等待用戶請求,完成內部調度并返回響應結果。
具體步驟如下:
用戶在瀏覽器輸入url之后,Web容器會接收到用戶請求。Web容器會自動調用doGet()或者doPost()方法。從doGet()或者doPost()方法中,我們可以獲得兩個對象,分別是request和response。通過request可以獲得用戶請求帶過來的信息,通過response可以往瀏覽器端輸出響應結果。
然后,根據request中獲得的請求url,可以從HandlerMapping中找到對應Method。
接著,還是利用反射調用方法,將獲得方法調用的返回結果。
最后,將返回結果通過response輸出到瀏覽器,用戶就可以看到響應結果。
都已經看到這里了,大家是不是覺得Spirng MVC執行流程非常簡單?
我是被編程耽誤的文藝Tom,如果大家還有其他疑問,可以在評論區留言。如果本次面試解析對你有幫助,請動動手指一鍵三連分享給更多的人。關注我,面試不再難!
關注微信公眾號『 Tom彈架構 』回復“Spring”可獲取完整源碼。 。
本文為“Tom彈架構”原創,轉載請注明出處。技術在于分享,我分享我快樂!
如果本文對您有幫助,歡迎關注和點贊;如果您有任何建議也可留言評論或私信,您的支持是我堅持創作的動力。關注微信公眾號『 Tom彈架構 』可獲取更多技術干貨!