前言

踩过很多坑,参考过很多博客,在不懈的坚持下终于迈进了spring源码的门槛

1、环境配置

本博客使用的是 ideal2020.3+gradle-6.4.1+spring-framework-5.1.x+jdk8

1.1安装和配置gradle

1.1.1下载gradle

下载链接

spring获取系统环境变量注解 spring环境变量配置_java

我使用的是gradle-6.4.1-bin.zip这个版本,下载好解压即可。

spring获取系统环境变量注解 spring环境变量配置_maven_02

1.1.2配置gradle环境变量

1.右键“这台电脑”–>“属性”–>“高级系统设置”–>“环境变量”–>“系统变量”

spring获取系统环境变量注解 spring环境变量配置_java_03

2.新增一个GRADLE_HOME值gradle为解压后的路径

spring获取系统环境变量注解 spring环境变量配置_spring_04

3.系统变量中修改Path变量,将Gradle的bin目录添加进去, 将gradle解压路径添加到Path变量 : ;D:\DJWORK\25gradle\gradle-6.4.1\bin

spring获取系统环境变量注解 spring环境变量配置_maven_05

4.查看安装的gradle的版本信息。

使用快捷键Win+R弹出的输入框中输入cmd,然后打开命令窗口,在命令窗口中输入gradle -v 或 gradle -version 可以查看到gradle的版本信息

spring获取系统环境变量注解 spring环境变量配置_spring_06

2、修改spring-framework-5.1.x,添加加速配置

在将Spring源码导入Idea时, 为了加快gradle下载依赖包的效率, 在以下配置文件中添加配置

maven { url "https://maven.aliyun.com/repository/spring-plugin" }
maven{ url "https://maven.aliyun.com/nexus/content/repositories/spring-plugin"}
maven { url "https://maven.aliyun.com/repository/central" }

spring获取系统环境变量注解 spring环境变量配置_spring获取系统环境变量注解_07

3、导入spring-framework-5.1.x

spring获取系统环境变量注解 spring环境变量配置_spring获取系统环境变量注解_08

3.1配置ideal

1、ideal中配置gradle

spring获取系统环境变量注解 spring环境变量配置_gradle_09

2、检查Kotlin版本和spring源码中是否一致

spring获取系统环境变量注解 spring环境变量配置_gradle_10

spring获取系统环境变量注解 spring环境变量配置_gradle_11

3、检查gradle版本是否和本地安装的一致

spring获取系统环境变量注解 spring环境变量配置_spring获取系统环境变量注解_12

4、刷新项目

spring获取系统环境变量注解 spring环境变量配置_spring_13


spring获取系统环境变量注解 spring环境变量配置_maven_14


1、buil spring-core和 spring-oxm

我们在运行自己添加的代码前先build一下spring的内核包。

import-into-idea.md导入手册中有下面这一句话:

spring-core and spring-oxm should be pre-compiled due to repackaged dependencies.所以按照顺序依次build

spring获取系统环境变量注解 spring环境变量配置_spring_15


在进行spring-core build时,控制台报错了

错误提示:

Spring源码编译时提示kotlin版本错误 
Kotlin: Language version 1.1 is no longer supported; please, use version 1.3

解决办法:

打开build.gradle,找到compileKotlin和compileTestKotlin,并修改kotlin版本为较新的版本:

spring获取系统环境变量注解 spring环境变量配置_gradle_16


spring获取系统环境变量注解 spring环境变量配置_spring获取系统环境变量注解_17

参考链接

进行spring-oxm也报错了
错误提示:

org.gradle.api.CircularReferenceException: Circular dependency between the following tasks:
:spring-beans:compileGroovy
— :spring-beans:compileJava
— :spring-beans:compileKotlin
— :spring-beans:compileGroovy (*)**

解决方法:

更改 Spring-Frameworkspring-beansspring-beans.gradle 文件,方法如下:

spring获取系统环境变量注解 spring环境变量配置_spring_18

在文件最后注释掉下面三行代码

// def deps = compileGroovy.taskDependencies.immutableValues + compileGroovy.taskDependencies.mutableValues
// compileGroovy.dependsOn = deps - "compileJava"
// compileKotlin.dependsOn(compileGroovy)

添加如下代码

tasks.named('compileGroovy') {
    // Groovy only needs the declared dependencies (and not the result of Java compilation)
    classpath = sourceSets.main.compileClasspath
}
tasks.named('compileKotlin') {
    // Kotlin also depends on the result of Groovy compilation
    classpath += files(sourceSets.main.groovy.classesDirectory)
}

单元测试时竟然没有反应

Intellij IDEA单元测试提示Test events were not received控制台输出

spring获取系统环境变量注解 spring环境变量配置_maven_19

解决办法

spring获取系统环境变量注解 spring环境变量配置_spring_20