目录
前言
相信只要是接触过java开发的小伙伴们一定都接触过Spring框架,并且出于面试的热点,相信大部分小伙伴对Spring的原理多多少少都会有一些了解,但对Spring的底层设计却是敬而远之,本文将和大家分享笔者对Spring的一些核心设计思想与心得。
个人认为Spring的学习阶级分为四级,第一阶级:对Spring应用有一定经验,了解Spring解决了什么问题;第二阶级:对Spring原理有一定认识,大概知道IOC、AOP实现原理以及应用场景;第三阶级:开始深入的了解Spring源码,对Spring IOC、AOP等核心源码有一定认识;第四阶段:更加全面的了解Spring,对Spring扩展、依赖注入、事件以及Spring的整体接口设计有较为深入理解,笔者会按照这样的Spring阶段思维和大家分享学习。
Spring源码下载、编码
笔者建议想要深入了解Spring,首先将其源码工程下下来,当然你也可以根据IDEA反编译进行阅读也一样,只是如果用源码工程可以修改注释,修改源代码方便测试。
Gradle下载
由于Spring源码用的是Gradle,所以需要先下载Gradle,笔者用的是Gradle4.8,现在可能已经6.x,进入官方地址,然后选择版本(Gradle下载地址:https://services.gradle.org/distributions/),下载后需要环境变量设置,和JDK设置一样就不多赘述了。环境变量配置完成后win+r,输入cmd进入dos界面,然后输入命令gradle -v验证即可。
Spring源码编译
点击[Spring源码下载](https://github.com/spring-projects/spring-framework),跳转到github页面,选择Spinrg源码版本将源码下载下来。再次win+r,输入cmd进入dos界面,执行gradle.bat cleanIdea :spring-oxm:compileTestJava 然后耐心等待直到出现下图
导入IDEA
打开IDEA,File->New->Project From Existing Sources…,选中Spring-framework文件夹,OK->Import project from external model,选中Gradle,点击Next,然后点击Finish,等待IDEA导入即可。
准备工作结束,开始源码编译新建一个module
默认下一步下一步,创建完后在java文件下新建一个Test
在创建好的modle下添加依赖,其实只添加这个 compile(project(":spring-context")) 依赖也不会报错,添加完后执行
执行后可能会出现
这是什么问题导致的呢?笔者猜测可能是编译不完全的问题于是我们找到org.springframework.instrument.InstrumentationSavingAgent查看我们的spring-context文件的gradle
看到这个option,将它修改
再次执行,按照这个思路,有类似的错误继续修改,最终
执行成功,接下来就可以在源码上进行调试、修改、注释。
文章来源微信公众号《七天0》
下一章节,笔者会对Spring基本的应用做一些简要说明