spring对Java开发小伙伴没有陌生的,基本大家都在用,但是针对源码进行了解的可能就不再多说了,我们一般是使用的jar包的形式进行引用spring,作为一个多年的开发经验的我们,不了解spring底层是怎么写的有点可惜,底层优雅的代码值得我们慢慢品味!好了现在我们先把spring的源码搭建到我们本地,进行编译,调试spring项目:
spring项目使用的不是maven管理,而是gradle所以今天我也准备gradle进行构建,需要声明maven也是完全可以的!

原来安装部署过一次没什么问题:今天编译的时候遇到了很多问题,都是因为版本的问题,为了让大家少走弯路我这个地方强调小版本
jdk 1.8
idea 2018.3
gradle 4.4.1
spring 5.0.x

gradle安装配置

  1. 下载gradle
    ​下载地址​​​​ https://services.gradle.org/distributions/​使用idea和gradle编译spring5源码_java
    下载安装文件,如果想深入学习可以下载源码,和说明文档等进行深入学习,目前我们只需要了解,如果不了解的就按照maven理解即可
    下载后解压即可以不需要安装
  2. 配置环境变量
  3. 使用idea和gradle编译spring5源码_spring_02

  4. 新建: GRADLE_HOME 变量值为解压安装文件目录
    path中添加:%GRADLE_HOME%/bin;

是否安装成功检测:

使用idea和gradle编译spring5源码_spring_03


这个版本需要jdk8我本地使用的是jdk7

升级jdk到8后看到的成功安装gradle

使用idea和gradle编译spring5源码_maven_04


配置gradle默认的本地仓库,gradle和maven类似,工作时也需要一个本地仓库,管理工程jar包,可做如下配置,新增GRADLE_USER_HOME,路径配置成需要的本地仓库路径即可

使用idea和gradle编译spring5源码_spring_05

spring源码下载

从github上直接搜索spring-framework 即可

使用idea和gradle编译spring5源码_maven_06


选择自己需要的版本下载到本地

spring5源码导入idea进行构建

1)将源码导入idea,idea怎么导入工程就不一一细说了,没使用过idea的大兄弟,可以恶补一下idea使用手册:file-open选到对应项目即可(先将源码解压到idea工作空间中去)

2),导入前先注意下工程下的这几个文件,为导入eclipse和idea前需要注意的地方

注意几点:

a,因为其他项目需要依赖spring-core和spring-oxm,所以我们导入后需要先编译这两个包

b,spring-aspects需要依赖三方jar(精通aop的应该知道spring-aop和aspectj的关系,在使用注解方式实现spring-aop的时候,需要导入aspectj的jar,有兴趣的可以去查阅下官方文档aop相关文档),这里编译可能会报错,不影响我们编译使用,我们先不处理

c,使用工具编译时,可能会出现内存溢出情况,这里我们编译时需要增加相关参数

-XX:MaxPermSize=2048m -Xmx2048m -XX:MaxHeapSize=2048m

3),以上工作完成之后,我们可以开始导入编辑编译配置了,如下图(需要注意的地方已在图中标注)

使用idea和gradle编译spring5源码_java_07


4),编译过程中会出现一些错误,常见如下a),jdk版本错误(如前所说,换成对应版本即可)

使用idea和gradle编译spring5源码_gradle_08


b),出现如下错误,点击open file,将框中内容注释即可

使用idea和gradle编译spring5源码_spring_09


说明这一步我没有遇到任何问题 唯一的就是等了好久,借用网络上的,侵权系删

新建modeul进行测试

使用idea和gradle编译spring5源码_java_10


比较顺利 没有遇到任何问题!大家遇到什么问题再一起探讨吧!一起学习

如上做完后,等着build完了即可,全称需要下载gradle仓库jar包,需要时间比较长,拼机器性能和网速的时候到了,兄弟们加油。