前言

  spring是一种开源的轻量级的 Io C 和AOP 的容器框架,具体原理操作配置在本人写的spring框架分类中详细介绍了,spring框架详解。我们知道了如何使用以及它的基本特征,但是对其内在是如何实现该功能的没有深刻的了解过。所以新建一个系列,会通过spring源码结合自身的理解,写一系列关于此框架的心得,愿与大家共勉!

一 spring 源码下载

     1.安装GitHub

  作为一个程序员对GitHub肯定不陌生,是一个上传下载代码的仓库管理器。可以去上网搜索GitHub下载,最好去官网下载。

 下载完后解压安装,安装成功后在快捷菜单中会出现如下图的图标:

spring schedule 源码解析 spring源码讲解_spring

安装完毕 打开Gitshell,新建一个你要保存源码的文件夹,然后cd 这个文件夹,

输入命令:git clone git://github.com/SpringSource/Spring-framework.git,等待其下载

spring schedule 源码解析 spring源码讲解_spring_02

下载完成你可以在这个文件夹下找到如下文件

spring schedule 源码解析 spring源码讲解_eclipse_03

2.直接下载


注意:避免后续编译出错,我们要注意jdk版本,一般来说spring4x后用的都是jdk1.8,所以你需要保证你的jdk版本。你也可以点击查看解压后的build.gradle文件,如下图:我这里因为spring版本挺新,所以需要的是jdk1.8

spring schedule 源码解析 spring源码讲解_spring_04

二 spring源码编译 

1.安装Gradle

Gradle是以Groovy语言为基础,面向Java应用为主。基于DSL(领域特定语言)语法的自动化构建工具。类似于我们熟悉的Maven  

spring schedule 源码解析 spring源码讲解_官网_05

x

这时候又遇到个问题,这么多gradle版本如何抉择呢?

还是看下载解压后的源码,看如下箭头的脚本,

spring schedule 源码解析 spring源码讲解_eclipse_06

打开后如下图

spring schedule 源码解析 spring源码讲解_官网_07

它再帮你下载,所以这个版本肯定没问题的,为什么不用这种方式,因为觉得速度太慢了,还是自己直接去官网下载这个4.10版本,看清楚是4.10而不是4.01,之前犯过这个低级错误。

下载完之后解压到你指定的文件夹中,然后进行环境变量配置。

说一下我是如何选择gradle版本的吧,经常会因为gradle版本的问题导致后续编译不成功。下载好的源码解压后,如下图

spring schedule 源码解析 spring源码讲解_eclipse_08

spring schedule 源码解析 spring源码讲解_spring_09

 

测试gradle有没有安装成功,

spring schedule 源码解析 spring源码讲解_spring_10

 

安装完毕

二 执行编译命令

我们需要哪个工程就去编译哪工程,如spring-beans:cd e://spring源码/Spring-framework/spring-beans,然后再执行gradle cleanIdea eclipse。温馨提示:对于可能报的错误不妨先看后面的部分,作修改后再运行此命令,即可将Spring-beans工程转换为eclipse可以识别的工程。等待时间让其自行编译

spring schedule 源码解析 spring源码讲解_eclipse_11

 

 

编译完成。

当然本人也走了不少弯路,这里将我遇到的问题说说

1.> No such property: immutableValues for class: org.gradle.api.internal.tasks.Def
aultTaskDependency

spring schedule 源码解析 spring源码讲解_spring源码_12

解决办法:

 找到spring-bean下的spring-beans.gradle,打开将下面几行注释掉

spring schedule 源码解析 spring源码讲解_spring_13

2.A problem occurred evaluating project ':spring-test'.
> Could not find method useJUnitPlatform() for arguments [spring_test_8r19wmak7j
swu9zlpio8zwueh$_run_closure4$_closure13@7e55ec4b] on task ':spring-test:testJUn
itJupiter' of type org.gradle.api.tasks.testing.Test.

spring schedule 源码解析 spring源码讲解_spring_14

解决办法:打开spring-test下的spring-test.gradle,将下面的报错的方法注释掉

spring schedule 源码解析 spring源码讲解_官网_15

修改完后运行成功

spring schedule 源码解析 spring源码讲解_spring源码_16

我陆续将spring-core,spring-jcl,spring-instrument,spring-expression,spring-context, spring-aop给编译好

你也可以选择直接一起编译。

四 导入eclipse

 这是我目前需要用到的一些项目

spring schedule 源码解析 spring源码讲解_eclipse_17

倒入后出现多个感叹号,证明jar包错误或者缺失,点击项目build path--Configure build path,出现如下图

spring schedule 源码解析 spring源码讲解_spring源码_18

这些包我们该如何获取呢?

在spring-framework目录下执行gradle objenesisRepackJar和gradle cglibRepackJar命令,会在Spring-framework\spring-core\build\libs目录下生成jar包。

spring schedule 源码解析 spring源码讲解_spring_19

将生成的jar包替换

spring schedule 源码解析 spring源码讲解_spring_20

然后将其jar选中,apply-->ok clean下项目

spring schedule 源码解析 spring源码讲解_spring_21

以上的操作全部完成后,你以为大功告成了吗?但是你又看到了spring-beans有个红叉

spring schedule 源码解析 spring源码讲解_spring_22

解决办法:

此时我们需要安装groovy插件,help-install new software

从Groovy官网复制安装groovy插件的地址:根据你当前eclipse版本选择对应的地址

然后全选后,开始下载,下载完后,重启eclipse,然后clean一下项目就搞定了。

spring schedule 源码解析 spring源码讲解_eclipse_23

 

spring schedule 源码解析 spring源码讲解_spring_24

 

总结:这个spring源码下载编译,虽然步骤不多,但是中途也犯了各种错误,整理出这一篇博客与读者共鸣。