深入浅出!这份阿里内传的“Spring MVC源码分析与实践笔记

2021-03-27  本文已影响0人  架构小菜

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

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

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

image

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源码分析与实践笔记》 的朋友 文末有直达获取地址。

第一篇 网站基础知识

本篇主要给大家介绍网站的基础知识,为后面具体分析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】获取免费下载方式!

上一篇 下一篇

猜你喜欢

热点阅读