javascript
SpringMVC源码阅读系列汇总
1.前言
1.1 導入
SpringMVC是基于Servlet和Spring框架設計的Web框架,做JavaWeb的同學應該都知道
本文基于Spring4.3.7源碼分析,(不要被圖片欺騙了,手動滑稽),Spring官網告訴我們,Spring可以構建基于JVM的Servlet程序。Spring初代版本在2003年由Rod Johnson所寫
以下摘自維基百科
The Spring Framework is an application framework and inversion of control container for the Java platform. The framework's core features can be used by any Java application, but there are extensions for building web applications on top of the Java EE (Enterprise Edition) platform. Although the framework does not impose any specific programming model, it has become popular in the Java community as an addition to, or even replacement for the Enterprise JavaBeans (EJB) model. The Spring Framework is open source.
1.2 版本歷史
| 0.9 | 2002 | ? |
| 1.0 | 2003 | ? |
| 2.0 | 2006 | ? |
| 3.0 | 2009 | ? |
| 4.0 | 2013 | ? |
| 5.0 | 2017 | ? |
1.3 雜談
2019年1月的某一天,我遇到了不能轉換Json和Xml的情況,百度了很久,都說Jar包版本不對,照網上說得改不行呢,在StackOverflow尬聊也沒有解決問題。后來我想到前公司的架構,發QQ問他,他半小時就給我解決方案,說把<mvc:annotation-driven/>啟動,注釋掉自己注入的Bean。或者手動注入MappingJackson2HttpMessageConverter和Jaxb2RootElementHttpMessageConverter。當時我聽到這些是懵圈的,沒有讀過源碼的我瑟瑟發抖,我問他怎么找到的,他發給我截圖,講在ReqeustMappingHandlerAdapter的afterPropertiesSet里發現了我的MessageConverters少了解析Xml和Json的核心類,頓時我恍然大悟,原來從源碼層面調試發現問題根本原因的效率這么高。樓主想到自己看了些所謂的教學視頻,學習著所謂的新技術,卻不曉其理,甚是懊悔,從那時起,我決定開始讀SpringMVC源碼,第一篇文章在2019年1月22日完成,SpringMVC源碼閱讀系列持續更新,SpringMVC基本的模塊已經閱讀完畢,模塊有需要補充的或者新模塊可以評論告訴樓主。
?
Spring4.3在2016年1月10日發布,官方提供更新支持到2020年,它快走到了盡頭,但是沒關系,目前國內有大把的人再用Spring4,短期內不會過時,現在甚至還有人用Spring3呢。
我沒有選擇閱讀Spring5的原因如下:
2.正文
2.1 文章推薦閱讀順序
SpringMVC源碼閱讀入門
有SpringMVC基礎的可以直接忽略不看。小白可以看看,該文不僅介紹了簡單的SpringMVC demo如何搭建,也交代了閱讀源碼的技巧
這個SpringMVC demo是一個增刪改查demo,持久層使用Hibernate,配置力圖最簡。讀者別看它是個簡單的demo,麻雀雖小,五臟俱全,后續文章的內容都是基于該demo分析
?
SpringMVC源碼閱讀:核心分發器DispatcherServlet
解讀SpringMVC的核心類,SpringMVC所有的邏輯都離不開它
?
SpringMVC源碼閱讀:定位Controller
解讀SpringMVC如何找到我們定義的Controller和Controller中的方法,比如路徑是如何映射的,弄清楚Controller是如何匹配我們傳入的參數,并定義簡單的參數解析器
?
SpringMVC源碼閱讀:Controller中參數解析
解讀Controller方法中的參數解析和參數解析類
?
SpringMVC源碼閱讀:Json,Xml自動轉換
解讀SpringMVC的Json和Xml的轉換原理
?
SpringMVC源碼閱讀:屬性編輯器、數據綁定
解讀SpringMVC數據綁定機制和屬性編輯器,介紹BeanWrapper,并自定義屬性編輯器
?
SpringMVC源碼閱讀:攔截器
解讀SpringMVC攔截器的工作原理并自定義攔截器
?
SpringMVC源碼閱讀:過濾器
解讀SpringMVC過濾器的工作原理,并自定義過濾器,讓你弄清楚過濾器和攔截器的區別
?
SpringMVC源碼閱讀:視圖解析器
即使前后端分離大行其道,視圖解析器作為Spring源碼的一部分,我們還是要研讀。該文解讀SpringMVC如何完成視圖解析,提供Freemarker和Jsp的共存方案
?
SpringMVC源碼閱讀:異常解析器
解讀SpringMVC如何完成異常解析、捕捉異常,并自定義異常和異常解析器
?
2.2 SpringMVC流程圖
博主根據打斷點調試畫得流程圖,用Xmind畫圖
?
3.參考
https://docs.spring.io/spring/docs/4.3.7.RELEASE/spring-framework-reference/htmlsingle/#beans-beans-conversion
轉載于:https://www.cnblogs.com/Java-Starter/p/10475374.html
總結
以上是生活随笔為你收集整理的SpringMVC源码阅读系列汇总的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: arcgis api for js图层显
- 下一篇: 分析解决Java运行时异常