比尔云BierYun--阿里云最新优惠活动
阿里云优惠码丨阿里云代金券

SpringMVC源码阅读系列汇总

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 版本历史

Version Date Notes
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源码阅读系列并未完结。

 

Spring4.3在2016年1月10日发布,官方提供更新支持到2020年,它快走到了尽头,但是没关系,国内有大把的人再用Spring4,短期内不会过时,现在甚至还有人用Spring3呢。

我没有选择阅读Spring5的原因如下:

  1. 前公司用的SpringBoot1.3.2+Spring4.2.4+JDK8,现在公司用的是Spring4.0.2+JDK7,基于对工作帮助比较大我选择了稳定版Spring4.3.7阅读。Spring5引用了大量特性,社区资料较少,且Spring5框架基于JDK8,就是说,大量特性我无法使用,如果有时间,以后我会阅读Spring5.x。
  2. Spring4.3.7功能完备,是个开源宝库,虽然版本不是最新,但是足以领略SpringMVC的所有风采。
  3. 这位博主的博客对我影响很大,推测他在大四的时候