Spring mvc源码分析系列--前言

前言

距离上次写文章已经过去接近两个月了,Spring mvc系列其实一直都想写,但是却不知道如何下笔,原因有如下几点:

  • 现在项目开发前后端分离的趋势不可阻挡。Spring mvc这一套里面部分内容稍显落后了,例如视图部分可以说是耦合前端的逻辑,现在的后端也很少再会去写jsp之类的东西。所以在现在看来,似乎是有一点落后于时代了。现在再去分析Spring mvc的实现,是不是有点吃力不讨好。
  • 项目开发中SpringBoot的广泛使用。SpringBoot提供了很多开箱即用的特性,这大量屏蔽了底层的细节,包括了这里想要分析的Spring mvc。那么在不知道的细节也能用得很好的情况下,再扒开Spring mvc的底裤去分析,是不是还有意义。
  • servlet听起来似乎过于陈旧。然而很遗憾,Spring mvc的实现就是基于servlet,最核心的一个类DispatcherServlet完成了大部分功能。所以现在去分析一个看起来很老旧的东西是不是还有价值。

不写的理由有很多,但是偷懒了两个月之后我还是决定写这部分。既然只是部分内容稍微过时了,那就说明还有在继续发光发热的部分,那我就力求贴近现在的开发使用,取其精华。Spring mvc基于的servlet虽然是个老东西了,但是有些东西是历久弥新的,如果一直没有出现一个东西完全替代它,不就恰恰说明它做得很好么?不过现在webflux开始兴起,servlet走向何方也未可知,至少在现在,它还在发挥着价值,值得一学。

在看Spring mvc这部分之前,需要掌握一些Spring的基础知识,可以去看一下我之前写的Ioc系列--Spring Ioc源码分析系列和Aop系列--老生常谈系列之Aop。其实看不看也无所谓,这部分比较简单,用过Spring开发的看懂基本没问题,有些细节可能不是很清楚的可以细看一下。

思路安排

本系列可能不只限于讲Spring mvc,可能会把周边关联的也讲一讲,例如web服务器Tomcat。

在这里我先灵魂拷问一下:

  • 浏览器的一个请求,是如何精确到达你的web服务器里的业务逻辑里的,其中经历的流程能说个所以然吗?
  • 我们一般用的web服务器是Tomcat,那么Tomcat给我们做了什么?
  • 它跟servlet又是如何关联起来的?
  • Spring mvc又做了什么,提供了什么便利?

这几个问题看起来简单,但是要说清楚,也不容易。可以简单思考下。

那接下来就说说计划的文章安排,可能最终会有出入,先安排如下:

  • Spring mvc与servlet的前世今生

  • web项目的启动流程,以Tomcat为例,Spring mvc为我们提供了什么,开发部署Spring mvc项目与纯servlet的区别

  • Spring mvc源码分析,这个可能会分几篇去写

  • SpringBoot内嵌Tomcat,SpringBoot时代,Spring mvc退居幕后,SpringBoot是如何做到了一键启动

  • 结束篇

总结

这篇文章就当是简单开个头,算是又立了flag。话不多说,准备开始填坑。

Spring mvc又是老话题了,我时常怀疑,总是写别人已经写过的东西,是不是真的有意义。我没有得到答案,也许一条路不会因为前人走过了,后续的人再走就没有意义了。

最大的意义可能就是一直走在路上。

如果有人看到这里,那在这里老话重提。与君共勉,路漫漫其修远兮,吾将上下而求索。

Spring mvc源码分析系列--前言的更多相关文章

  1. Spring mvc源码分析系列--Servlet的前世今生

    Spring mvc源码分析系列--Servlet的前世今生 概述 上一篇文章Spring mvc源码分析系列--前言挖了坑,但是由于最近需求繁忙,一直没有时间填坑.今天暂且来填一个小坑,这篇文章我们 ...

  2. Spring Ioc源码分析系列--前言

    Spring Ioc源码分析系列--前言 为什么要写这个系列文章 首先这是我个人很久之前的一个计划,拖了很久没有实施,现在算是填坑了.其次,作为一个Java开发者,Spring是绕不开的课题.在Spr ...

  3. Spring AOP 源码分析系列文章导读

    1. 简介 前一段时间,我学习了 Spring IOC 容器方面的源码,并写了数篇文章对此进行讲解.在写完 Spring IOC 容器源码分析系列文章中的最后一篇后,没敢懈怠,趁热打铁,花了3天时间阅 ...

  4. 精尽Spring MVC源码分析 - 寻找遗失的 web.xml

    该系列文档是本人在学习 Spring MVC 的源码过程中总结下来的,可能对读者不太友好,请结合我的源码注释 Spring MVC 源码分析 GitHub 地址 进行阅读 Spring 版本:5.2. ...

  5. 精尽Spring MVC源码分析 - 调式环境搭建

    该系列文档是本人在学习 Spring MVC 的源码过程中总结下来的,可能对读者不太友好,请结合我的源码注释 Spring MVC 源码分析 GitHub 地址 进行阅读 Spring 版本:5.2. ...

  6. 精尽Spring MVC源码分析 - 文章导读

    该系列文档是本人在学习 Spring MVC 的源码过程中总结下来的,可能对读者不太友好,请结合我的源码注释 Spring MVC 源码分析 GitHub 地址 进行阅读 Spring 版本:5.2. ...

  7. 精尽Spring MVC源码分析 - WebApplicationContext 容器的初始化

    该系列文档是本人在学习 Spring MVC 的源码过程中总结下来的,可能对读者不太友好,请结合我的源码注释 Spring MVC 源码分析 GitHub 地址 进行阅读 Spring 版本:5.2. ...

  8. 精尽Spring MVC源码分析 - 一个请求的旅行过程

    该系列文档是本人在学习 Spring MVC 的源码过程中总结下来的,可能对读者不太友好,请结合我的源码注释 Spring MVC 源码分析 GitHub 地址 进行阅读 Spring 版本:5.2. ...

  9. 精尽Spring MVC源码分析 - MultipartResolver 组件

    该系列文档是本人在学习 Spring MVC 的源码过程中总结下来的,可能对读者不太友好,请结合我的源码注释 Spring MVC 源码分析 GitHub 地址 进行阅读 Spring 版本:5.2. ...

随机推荐

  1. 【算法】Floyd算法

    什么是Floyd Floyd用于求最短路程.举个栗子,给你一张图,让你求出点[1]到点[5]的最短路程,你会怎么求? (画图工具:CS Academy) 如上图,有向边分别是 1->2  1-& ...

  2. 论文解读(ARVGA)《Learning Graph Embedding with Adversarial Training Methods》

    论文信息 论文标题:Learning Graph Embedding with Adversarial Training Methods论文作者:Shirui Pan, Ruiqi Hu, Sai-f ...

  3. sort是不稳定排序

    今天才知道sort是不稳定的,WA了一个点. sort()排序不是稳定排序,sort是主要用到了快速排序(平均时间复杂度为O(nlogn)),还结合了插入排序(时间复杂度为O(n2))和堆排序(时间复 ...

  4. 2021.04.03【NOIP提高B组】模拟 总结

    T1 题目大意:求最小的 \(n\in[0,lim]\) 使得区间 \([L,R]\) 在线段树建树 \(build(0,n)\) 的区间内 考场时想到了正解,结果推式子退错了... 其实就是从下往上 ...

  5. C#.NET中的程序集版本

    更新记录 2022年4月16日:本文迁移自Panda666原博客,原发布时间:2021年8月22日. 在Visual Studio中查看程序集版本 在程序运行中获得程序集版本信息 除了在Visual ...

  6. windows 2003系统安装

    一.使用workstation创建虚拟机 二.系统安装 点击"Enter" 点击"F8" 点击"Enter" 如下图所示: 点击" ...

  7. 如何手动解析vue单文件并预览?

    开头 笔者之前的文章里介绍过一个代码在线编辑预览工具的实现(传送门:快速搭建一个代码在线编辑预览工具),实现了css.html.js的编辑,但是对于demo场景来说,vue单文件也是一个比较好的代码组 ...

  8. go: 如何编写一个正确的udp服务端

    udp的服务端有一个大坑,即如果收包不及时,在系统缓冲写满后,将大量丢包. 在网上通常的示例中,一般在for循环中执行操作逻辑.这在生产环境将是一个隐患.是的,俺就翻车了. go强大简易的并发能力可以 ...

  9. FDFS上传文件报错 tracker_query_storage fail, error no: 2, error info: No such file or directo

    原因: 1.tracker服务没有启动 2.Storage服务没有启动 解决方案: 输入命令查看这两个服务是否启动,如果没有则表明没有启动.启动即可. netstat -tulnp tracker服务 ...

  10. windows版anaconda+CUDA9.0+cudnn7+pytorch+tensorflow安装

    1.Anaconda 首先下载Anaconda,它是一个开源的python发行版本,含有众多科学工具包,直接安装anaconda免除了许多包的手动安装,点击这里下载. 按照你的实际情况选择下载.下载完 ...