1 源码下载与编译
Spring开源框架经过很长时间的发展,各个模块均已成熟,一个常识就是一个可靠,可扩展的高性能框架,它的代码行数是相当可观的,我用static插件简略测算了一下,Spring的源码有100多万行,可以想象其中的调用逻辑是相当复杂的,所以将Spring源码下载到本地再编译的话,我们就可以通过IDE的debug来来到抽丝剥茧分析源码的目的,并且我们可以很方便的使用idea来查看调用栈,方法的调用关系也就比较明了了。
下载Spring源码:https://github.com/spring-projects/spring-framework/tree/v5.2.0.RELEASE
Spring是通过gradle构建的:https://www.zhihu.com/question/30432152
gradle可以在不安装的情况下提供一个一键运行的脚本,打开Spring源码的根目录,找到build.gradle文件,添加阿里云镜像:
repositories {
maven{ url 'https://maven.aliyun.com/nexus/content/groups/public/' }
maven{ url 'https://maven.aliyun.com/nexus/content/repositories/jcenter'}
}
将Spring源码导入到idea中:https://mp.weixin.qq.com/s/FIjGS13J10DF9_bqohYVjQ
导入完毕后要将spring-aspects排除出去,右键,load/unload modules,将其unload再重新build
看源码之前要先读一下spring的文档:
https://docs.spring.io/spring-framework/docs/current/reference/html/
2 创建学习入口
spring源码下载到本地后,为了调试我们还要创建一个程序入口。
创建一个新模块spring-demo,目的是引用上面那些模块的服务,作为后面调试的入口。
新建service接口:
package com.wjw.service;