写点什么

历时 4 个月,4 大板块,328 页 52188 字,SpringMVC 源码解析文档

作者:冉然学Java
  • 2022 年 8 月 12 日
    湖南
  • 本文字数:4554 字

    阅读完需:约 15 分钟

历时4个月,4大板块,328页52188字,SpringMVC源码解析文档

什么是 Spring MVC?为什么要会用 Spring MVC?


Spring 下的子项目:Spring Web MVC 是一种基于 Java 的实现了 Web MVC 设计模式的请求驱动类型的轻量级 Web 框架,即使用了 MVC 架构模式的思想,将 web 层进行职责解耦,基于请求驱动指的就是使用请求-响应模型,框架的目的就是帮助我们简化开发,Spring Web MVC 也是要简化我们日常 Web 开发的。

在大型网站和复杂系统的开发中,Java 无疑具有很大的优势,而在 Java 的 Web 框架中 Spring MVC 以其强大的功能简单且灵活的用法受到越来越多开发者的青睐。


PS: 但由于文章篇幅过长,需要这份 《SpringMVC 源码解析与实战》学习笔记 ,点击【SpringMVC】,即可免费领取!


Spring Web MVC 能帮我们做什么?


  1. 让我们能非常简单的设计出干净的 Web 层和薄薄的 Web 层;

  2. 进行更简洁的 Web 层的开发;

  3. 天生与 Spring 框架集成(如 IoC 容器、AOP 等);

  4. 提供强大的约定大于配置的契约式编程支持;

  5. 能简单的进行 Web 层的单元测试;

  6. 支持灵活的 URL 到页面控制器的映射;

  7. 非常容易与其他视图技术集成,如 Velocity、FreeMarker 等等,因为模型数据不放在特定的 API 里,而是放在一个 Model 里(Map 数据结构实现,因此很容易被其他框架使用);

  8. 非常灵活的数据验证、格式化和数据绑定机制,能使用任何对象进行数据绑定,不必实现特定框架的 API;

  9. 提供一套强大的 JSP 标签库,简化 JSP 开发;

  10. 支持灵活的本地化、主题等解析;

  11. 更加简单的异常处理;

  12. 对静态资源的支持;

  13. 支持 Restful 风格。

那么这份资料有什么特色?厉害在哪里?凭什么可以说能带我们看透 Spring MVC 源码?

  • 全面介绍 Spring MVC 的架构、原理、核心概念和操作,通过案例完整呈现 Tomcat 的实现,系统总结 Spring MVC 九大组件的处理以及常用的技巧和最佳实践

  • 国内资深 Web 开发专家根据 Spring MVC 最新技术撰写,基于实际生产环境,从基础知识、源代码和实战 3 个维度对 Spring MVC 的结构和实现进行详细讲解

  • 本资料从最底层的架构和协议开始讲解,即使没有太多开发经验的读者也可以理解,同时由于本资料包含的内容全面而且深入,所以即使有丰富 Web 开发经验的读者读过之后也会有所收获。

  • 本资料采用了总分总的结构,首先概述全资料内容,让大家在脑子里建立起整个框架,然后再对每个点展开分析,最后总结。这就好像一栋建筑, 首先把它的整体结构展示给大家,然后再具体介绍每个细节,这样就可以让大家思路清晰而不至于迷失方向。这种模式最符合人的认知方式,所以不仅仅适用于学习,而且可以使用到别的很多地方,比如,进入一个新公司后(特别是大型公司),首先要了解一下公司都有哪些部门,各个部门之间是怎么协调配合的,弄明白整体结构之后再思考自己的业务,这样就可以理解得更加深,做得更好,如果有机会再多了解点其他部门的业务,这样成长得就会更快。

  • 本资料讲解的过程通俗易懂、深入浅出,对于不容易理解的内容,通过简单的例子让大家一目了然。在分析源代码的过程中还对一些代码分析了 Spring MVC 为什么要那么处理,那么处理有哪些好处,有些地方还为大家指出了需要注意的问题、可以实现的需求以及可以借鉴的东西等内容。

通过这份资料你可以得到什么?

  • 系统学习网站的各种架构以及相应问题的解决方案。

  • 零基础系统学习 Web 底层协议及其实现方法。

  • 系统、深入地理解 Spring MVC,为灵活开发高质量产品打下基础。

  • 学习 Spring MVC 的编程技巧和设计理念,提高自己综合思考、整体架构的能力。

  • 学习到笔者设计的一套分析源码的方法——器用分析法, 古人说“授人以鱼不如授人以渔”,虽然这套方法并不复杂但是对于分析复杂的代码却非常有用。

适用于哪些水平的读者学习?

  • 有 Java 编程基础,想学习 JavaWeb 开发的读者。

  • 有 JavaWeb 开发经验,想学习 Spring MVC 的读者。

  • 有基础 Spring MVC 开发经验,想深入学习的读者。

  • 有丰富 Spring MVC 开发经验,想学习 Spring MVC 底层代码的读者。

  • 想自己开发 Spring MVC 插件的读者。


由于整个笔记比较全面,内容相当的多 ,这里仅展示资料的一些截图,如有需要获取文中提到的 “SpringMVC 源码解析与实战笔记” 的朋友 ,点击【SpringMVC】,即可免费领取!



第一篇 网站基础知识

本篇主要给大家介绍网站的基础知识,为后面具体分析 Spring MVC 打下基础。内容主要包括架构的演变、Web 中涉及的协议、协议的实现方法、Java 中的 Servlet 以及对一个完整的产品 Tomcat 的分析等 5 部分。

本篇的很多内容,如底层协议和 Tomcat 的实现方法,在正常做开发的时候并不会直接使用到,不过理解了之后可以让我们在进行具体开发的时候更加得心应手,就好像数学中的基本运算,我们不需要知道原理也可以借助计算器计算出结果,但是如果明白了共中的原理就可以对计算带来很多帮助。

比如,可以预先大概估计计算结果,当计算器的计算结果偏差很大时就可以看出来;可以使用一些简单的计算方法;还可以通过对具体内容的学习学到一些优秀思想,思想本身是很难学习的,需要通过一定的载体才可以传播,底层的知识就是这样的载体。

现在社会中普遍注重创新,共实创新是建立在扎实的基础之上的,如果没有扎实的基础就很难做出合理而且.易用的创建成果。所以本篇的内容虽然在开发中一般不会直接使用到,但是对于提高自己的能力非常重要。

第一章 网站架构及其演变过程

  1. 软件的三大类型

  2. 基础的结构并不简单

  3. 架构演变的起点

  4. 海量数据的解决方案

  5. 高并发的解决方案

  6. 底层的优化

  7. 小结


第二章 常见协议和标准

  1. DNS 协议

  2. TCP/IP 协议与 Socket

  3. HTTP 协议

  4. Servlet 与 Java Web 开发


第三章 DNS 的设置

  1. DNS 解析

  2. Windows 7 设置 DNS 服务器

  3. Windows 设置本机域名和 IP 的对应关系


第四章 Java 中 Socket 的用法

  1. 普通 Socket 的用法

  2. NioSocket 的用法


第五章 自己动手实现 HTTP 协议


第六章 详解 Servlet

  1. Servlet 接口

  2. GenerieServlet

  3. HttpServlet


第七章 Tomcat 分析

  1. Tomcat 的顶层结构及启动过程

  2. Tomcat 的生命周期管理

  3. Container 分析

  4. Pipeline-Value 管道

  5. Connector 分析


第二篇 俯视 Spring MVC

Spring MVC 的本质共实就是一个 Servlet,,本篇将从顶层分析 Spring MVC 的结构,让大家对 Spring MVC 有个整体的认识。

对一个框架的学习,首先要知道怎么用,然后才好进行分析。由于 Spring MVC 的结构比较复杂,所以对共分析需要有一定的策略,否则很容易陷到具体的细节里面,感觉代码大概也能看明白,但具体怎么回事也说不清。

古人说“工欲善共事,必先利共器",我们要分析的 Spring MVC 就是这么一个器。首先 Spring MVC 是一个工具,然后才能用来干活,既然是个工具,首先就要将其制造(创建)出来,然后才可以用它干活,所以 Spring MVC 的代码可以分成两步来进行分析,第一步分析 Spring MVC 是怎么创建出来的,第二步分析它是怎么干活的。

这种方法可以在一个复杂的类的很多看似杂乱无章的方法中快速梳理出头绪,所以它不仅可以用于分析 Spring MVC 的源码,分析别的源码也可以使用,特别是分析一些复杂源码的时候。

本资料不仅是在分析 Spring MVC 整体结构时用了这种思路,在后面分析组件的过程中也还会有很多地方使用这种思路。为了方便称呼,就将要分析的目标叫作“器",用法叫作“用”,备先分析“器”的创建再分析“用”的方法的分析法称为“器用分析法”。

第八章 Spring MVC 之初体验

  1. 环境搭建

  2. Spring MVC 最简单的配置

  3. 关联 spring 源代码

  4. 小结


第九章 创建 Spring MVC 之器

  1. 整体结构介绍

  2. HttpServletBean

  3. FrameworkServlet

  4. DispatcherServlet

  5. 小结


第十章 Spring MVC 之用

  1. HttpServletBean

  2. FrameworkServlet

  3. DispatcherServlet

  4. doDispatch 结构

  5. 小结


第三篇 Spring MVC 组件分析

在前面已经分析了 Spring MVC 整体的结构以及处理流程,本篇对每个具体的组件进行详细的分析。

首先,介绍各个组件的接口、功能和用法,让大家明白它们到底是什么,有什么用,怎么用,对它们有个宏观认识,然后具体对每个组件的各种实现方式进行详细分析。

第十一章 组件概览

  1. HandlerMapping

  2. HandlerAdapter

  3. HandlerExceptionResolver

  4. ViewResolver

  5. RequestToViewNameTranslator

  6. LocaleResolver

  7. ThemeResolver

  8. MultipartResolver

  9. FlashMapManager

  10. 小结


第十二章 HandlerMapping

  1. AbstractHandlerMapping

  2. AbstractUrlHandlerMapping 系列

  3. AbstractHandlerMethodMapping 系列

  4. 小结


第十三章 HandlerAdapter

  1. RequestMappingHandlerAdapter 概述

  2. RequestMappingHandlerAdapter 自身结构

  3. ModelAndViewContainer

  4. SessionAttributesHandler 和 SessionAttributeStore

  5. ModelFactory

  6. ServletlnvocableHandlerMethod

  7. HandlerMethodArgumentResolver

  8. HandlerMethodReturnValue-Handler

  9. 小结


第十四章 ViewResolver

  1. ContentNegotiatingViewResolver

  2. AbstractCachingViewResolver 系列

  3. 小结


第十五章 RequestToViewName-Translator


第十六章 HandlerExceptionResolver

  1. AbstractHandlerException-Resolver

  2. ExceptionHandlerException-Resolver

  3. DefaultHandlerExceptionResolver

  4. ResponseStatusExceptionResolver

  5. SimpleMappingExceptionResolver

  6. 小结


第十七章 MultipartResolver

  1. StandardServletMultipart-Resolver

  2. CommonsMultipartResolver

  3. 小结


第十八章 LocaleResolver


第十九章 ThemeResolver


第二十章 FlashMapManager


第四篇 总结与补充

前面三篇已经将 Spring MVC 的源代码分析完毕,本篇主要对前面的内容做一个总结, 另外再将异步请求相关的内容给大家做个补充。

学习完一样东西之后及时地总结可以在很短的时间内获得很大的收获,这不仅适用于开源框架的学习,同时也适用于其他内容的学习。

这么做首先可以加深对所学内容的印象,更重要的是可以站在更高的层次来综合思考,这样就可以将所学的内容整合到一个整体结构中,并且这时候很容易想明白原来没理解的疑点,也就是所谓的将书“先看厚再看薄”中看薄的过程。


异步请求是现在比较热门的一种技术,Spring MVC 也提供了对它的支持,不过它的异步请求处理过程是分散在整个请求处理过程的各个环节中的,所以如果在分析 Spring MVC 怎么处理请求之前讲解异步处理会比较困难,另外异步请求有其独立的处理方式,如果将它的内容分散到对 Spring MVC 分析的过程中讲解将会加大大家对 Spring MVC 理解的难度,所以单独将这部分内容通过补充的形式放在最后讲解给大家。

第二十一章 总结

  1. Spring MVC 原理总结

  2. 实际跟踪一个请求


第二十二章 异步请求

  1. Servlet 3.0 对异步请求的支持

  2. Spring MVC 中的异步请求

  3. 小结


写在最后

Spring MVC 入门很简单,但是要想真正使用好却并非易事,而且现在也没有全面、深入地使用资料,以致在实际使用的过程中程序员经常会遇到各种各样的问题而不知道如何解决。对 Spring MVC 这样的开源项目来说,最好的学习方法当然是分析它的源代码,分析透源代码不仅可以让我们更灵活地使用 Spring MVC 来开发高质量的产品,而且可以学习到其中的很多优秀的编程技巧和设计理念。

当然,并不是说像看小说一样翻一遍资料就可以获得这么多东西,这需要大家真正沉下心来认真地去看,而且最好能对照着源代码去看。


俗话说“磨刀不误砍柴工”,分析源代码就是磨刀的过程,是真正提升自己实力的过程,就像武术里的内功修炼一样,只有花足够的时间和精力才能到达一定的高度,这就是我们经常说的“功夫”,当功夫达到一定的高度时很多棘手的问题就可以轻而易举地解决了。


这份资料除了分析 SpringMVC 的源代码,还系统地介绍了各种网站架构的演变以及 Web 开发中所涉及的协议和 Tomcat 的实现方法,现在很多程序员都想了解这方面的知识,但苦于缺乏通俗易懂的资料,而且这些也是程序员达到更高的层次所需要的知识


PS: 需要这份 《SpringMVC 源码解析与实战》学习笔记 ,点击【SpringMVC】,即可免费领取!

用户头像

冉然学Java

关注

还未添加个人签名 2022.07.07 加入

努力学好Java、爱生活、爱旅游的冉冉; 分享自己工作上的经验,交流、共进步、共成长!

评论

发布
暂无评论
历时4个月,4大板块,328页52188字,SpringMVC源码解析文档_Java_冉然学Java_InfoQ写作社区