阅读源码的意义

  1. 更深入理解框架原理,印象更深刻
  2. 学习优秀的编程风格、编程技巧、设计思想
  3. 解决实际问题,如修复框架中的bug,或是参考框架源码,结合实际业务需求编写一个独有的框架

阅读源码的方法

  1. 首先是要有一定的编程经验。如果连业务代码都写得不流畅那是不建议阅读源码的,因为基础不好的情况下一是阅读困难,二是无法静下心理解,每看两行就会纠结花大量时间在源码上是否值得,感觉不如写多两行业务代码来得有价值。
  2. 要有耐心。一篇关于源码的文章可能需要阅读两三小时以上才能读完,如果没有这个觉悟,可能看到一半就转头去干别的事了。
  3. 先读文档,理解概念,而不是一上来就扎在代码中。要从代码中反推出设计逻辑是非常痛苦的,也是最没意义的,除非实在是没有相关文档,例如研究竞争对手的源码。(文档可以是官方文档也可以是网上的优秀博客文章,主要用于理解设计概念)

本专题阅读指引

  • 本专题涵盖Spring IOC容器、SpringMVC、AOP、事务四大方面,内容较多,要较长时间消化
  • 可下载带有我注释笔记的Spring源码,Spring版本是5.1.2.BUILD-SNAPSHOT,下载地址https://github.com/leapmie/spring-framework-master-note
  • 每个专题都会配有我整理的调用过程图,可以理解为源码追踪地图,建议是一边看调用过程图一边跟踪源码,因为Spring的源码非常复杂,调用层次很深,非常容易在源码中迷路,看到一半就分不清自己身在何处了。

[目录]
[下一篇]Spring源码分析专题 —— IOC容器启动过程(上篇)


Spring源码分析专题 —— 阅读指引的更多相关文章

  1. Spring源码分析专题——目录

    Spring源码分析专题 -- 阅读指引 IOC容器 Spring源码分析专题 -- IOC容器启动过程(上篇) Spring源码分析专题 -- IOC容器启动过程(中篇) Spring源码分析专题 ...

  2. Spring源码分析专题 —— IOC容器启动过程(上篇)

    声明 1.建议先阅读<Spring源码分析专题 -- 阅读指引> 2.强烈建议阅读过程中要参照调用过程图,每篇都有其对应的调用过程图 3.写文不易,转载请标明出处 前言 关于 IOC 容器 ...

  3. Spring源码分析——BeanFactory体系之抽象类、类分析(一)

    上一篇介绍了BeanFactory体系的所有接口——Spring源码分析——BeanFactory体系之接口详细分析,本篇就接着介绍BeanFactory体系的抽象类和接口. 一.BeanFactor ...

  4. Spring源码分析——资源访问利器Resource之实现类分析

    今天来分析Spring的资源接口Resource的各个实现类.关于它的接口和抽象类,参见上一篇博文——Spring源码分析——资源访问利器Resource之接口和抽象类分析 一.文件系统资源 File ...

  5. spring源码分析(二)Aop

    创建日期:2016.08.19 修改日期:2016.08.20-2016.08.21 交流QQ:992591601 参考资料:<spring源码深度解析>.<spring技术内幕&g ...

  6. 【Spring源码分析】Bean加载流程概览

    代码入口 之前写文章都会啰啰嗦嗦一大堆再开始,进入[Spring源码分析]这个板块就直接切入正题了. 很多朋友可能想看Spring源码,但是不知道应当如何入手去看,这个可以理解:Java开发者通常从事 ...

  7. 【spring源码分析】IOC容器初始化(一)

    前言:spring主要就是对bean进行管理,因此IOC容器的初始化过程非常重要,搞清楚其原理不管在实际生产或面试过程中都十分的有用.在[spring源码分析]准备工作中已经搭建好spring的环境, ...

  8. Spring 源码分析-1-启动

    Spring 源码分析-1-启动 在web项目中使用spring的时候,我们会在web.xml中加入如下配置: <listener> <listener-class>org.s ...

  9. 【Spring源码分析】Bean加载流程概览(转)

    转载自:https://www.cnblogs.com/xrq730/p/6285358.html 代码入口 之前写文章都会啰啰嗦嗦一大堆再开始,进入[Spring源码分析]这个板块就直接切入正题了. ...

随机推荐

  1. iOS 画圆形头像

    demo下载地址:http://pan.baidu.com/s/1mgBf6YG _logoImageView.image = [self getEllipseImageWithImage:[UIIm ...

  2. Material Design控件使用学习 TabLayout+SwipeRefreshlayout

    效果: Tablayout有点类似之前接触过的开源ViewPagerIndicator,将其与viewpager绑定,可实现viewpager的导航功能. SwipeRefreshLayout是官方出 ...

  3. 基于SIFT的点云关键点提取

    这篇博文主要介绍SIFT算法在提取点云图像关键点时的具体用法. 尺度不变特征转换(Scale-invariant feature transform,SIFT)是David Lowe在1999年发表, ...

  4. Codefroces432 div2 A,B,C

    A. Arpa and a research in Mexican wave Arpa is researching the Mexican wave. There are n spectators ...

  5. Copying GC (Part one)

    目录 GC复制算法 copy()函数 将传递给自己的参数复制,然后递归复制其孩子 new_obj()函数 执行过程 缺点 Cheney的GC复制算法 copy()函数 执行过程 被隐藏的队列 优缺点 ...

  6. [Python] Working with file

    Python allows you to open a file, do operations on it, and automatically close it afterwards using w ...

  7. CentOS 7.0yum安装MySQL

    CentOS 7.0yum安装MySQL 1.下载mysql的repo源 $ wget http://repo.mysql.com/mysql-community-release-el7-5.noar ...

  8. spring源码分析之@Conditional

    根源在AnnotationConfigApplicationContext和AnnotationConfigWebApplicationContext,以AnnotationConfigApplica ...

  9. HDU 2633 Getting Driving License(模拟)

    Getting Driving License Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/ ...

  10. java 第三方库

    转载自http://www.cnblogs.com/lucus-jia/p/3483511.html java 第三方库   总结一下常用的java第三方库,方便查询和使用,欢迎补充. 1.核心库 A ...