源码分析的目的是讲解代码要解决什么问题、代码如何解决问题的以及代码为什么要这么解决问题。
源码分析的入手点是软件而不是源代码。软件( Software )是一个宽泛的概念,包括应用程序、工具箱和框架等等。软件可以说是由代码组成的,那么我们强调入手点是软件而不是源代码的原因是什么呢?
源码分析从源代码入手,就容易落入具体实现的窠臼当中;而代码构成的软件整体,有其被创造的背景、要解决的问题、演进过程中面临的困难和决策,以及最终所为用户认知的形态。源码分析从软件整体入手,才能够脱离技术人员对技术本身的痴迷的影响,从务实的角度讲解代码要解决什么问题、代码如何解决问题的以及代码为什么要这么解决问题。
《深入理解 Spring MVC 源代码》的讲解按照目录分成三个部分。
第一部分主要从使用的角度入手,由开发者最熟悉的功能切入,讲解了基本组件包括控制器、模型和视图在抽象层面上是如何被支持的。在此基础上对 MVC 模型最承担逻辑的控制器展开了详细的介绍,尤其是平时容易被终端开发者忽略的请求是如何进入框架和流程以及返回值是如何交付给请求方的。最后用简短的篇幅简略地介绍了 WebFlux 的发展趋势和一些常见的配置项。
第二部分接着从源码切入,首先介绍了源码阅读的一些技术技巧,再对 Spring MVC 框架的启动、MVC 框架请求分发的核心 DispatcherServlet 类的功能、RequestMapping 的查找原理和请求处理方法的执行过程一一进行具体的介绍。每个细节部分也是按照这种主题加解决方法的模式,先抛出一个问题,抽象地讨论解决思路,再结合代码讲解关键细节,最后简略地做完整性补充和扩展讨论。
第三部分可以单独拆开来,是在完成了源码分析以后以一个常见的基于 Spring MVC 实现微信公众号快速开发框架的例子来介绍 Spring MVC 的实用过程。通过分析时下热点的具体实例,可以让读者清晰的看到前面所讲的知识点在实践中到底是怎么被运用的,哪些一定会涉及且常常会被实现考虑在内,哪些是在哪种特定情况下会涉及的,以及哪些是平常看不到的或者不需要重点钻研的。
参考链接
- 源码分析怎么做?, by tison.
- 程序员阅读源码是一种什么心态?源码对编程意义何在?如何才能更好阅读代码?,by zhihu.