有老鐵聯繫我,想好好學習一個框架,從底層看源碼,從頭跟到尾,每一個都寫上註釋。個人建議老鐵別傻了,別人寫一個框架多少我的的團隊,多少個日日夜夜你還要養家餬口,其實有三個階段,我來講下具體哪三個階段。web
學習一個框架的階段面試
- 學會對這個框架的使用
翻翻書,百度一下基本就能夠了。- 掌握這個框架的架構思想和它的層次結構。【掌握到第二階段就剛恰好】
接口,模型,上下文。思想和層次基本都瞭解,怎麼運做。- 掌握底層的實現細節(須要改造的時候再去深刻細節)
並不建議掌握第三層,框架進行改造的,底層具體實現進行研究,並不須要所有都瞭解,而是改哪裏研究哪裏,具體的實現。具體實現。千萬不要,看一個框架的源碼,從頭跟到尾,例如spring MVC的功能,mvc究竟是怎麼實現的,從它定義到它的實現,到全部的子類的實現,一個縱向的學習很容易就繞暈了。一個spring mvc可能有上千個方法被調用。你能受得了嗎?老鐵!
####mvc的基礎理論與spring mvc設計思想spring
- 回顧serlvet與jsp執行
記得剛畢業的時候面試,常常問servlet是什麼?servlet的生命週期?jsp的9大內置對象是什麼?數據庫
spring mvc 本質上對其進行封裝簡化了開發流程,易用性, 程序的結構更清晰。架構
- 基於註解的URL映射
- http表單參數轉換
- 全局統一的異常處理
- 攔截器的實現
- 多視圖控制
其實若是項目比較小,不必非用spring mvc 看我的習慣吧。網上也有一種說法,spring mvc其實性能沒有servlet快,這個能夠忽略不記,其實百分之90都是在數據庫的瓶頸上,或者是業務邏輯的web方法處理上。springmvc只是在serlvet的基礎上完成了一些功能,其實沒沒啥開拓的功能,只是serlvet的提高,封裝。mvc
- spring mvc的流程
- 基於示例展開dispatchServlet 核心類結構
- HandlerMapping:url與控制器的映謝
- HandlerAdapter: 控制器執行適配器
- ViewResolver: 視圖倉庫
- view:具體解析視圖
- HandlerExceptionResolver:異常捕捕捉器
-
spring mvc 上下文初始過程(10)app
- webApplicationContext 初始過程
- handlerMappings 初始過程
- handlerExceptionResolvers 初始過程
- viewResolvers 初始過程
- handleAdapters 初始過程
- request請求過程
- 調用doDispatch()
- 遍歷handlerMappings 與request 獲取一個執行鏈 getHandler()
- 遍歷handleAdapters 與 handle 獲取一個handle 適配器
- 經過執行鏈 去調用攔截器當中的 preHandle() 方法 ,進行預處理。
- 基於handle 適配器 去調用handle 方法,返回 modelAndView
- 經過執行鏈 去調用攔截器當中的 PostHandle() 方法 ,進行攔截處理。
- processDispatchResult()
7.1. 正常:調用render()進行視圖解析
7.1.1 基於 遍歷 viewResolvers 工與 viewname 獲取View
7.1.2 調用view.render() 進行視圖解析和返回,設置model 至request
7.2 異常:遍歷handlerExceptionResolvers 調用resolveException(),返回mv,最後跳轉至異常
PS:spring mvc 源碼這塊就說到這裏,看的頭暈眼花,容許我抽根菸,哈哈。框架