Spring源码阅读(一):使用IDEA搭建Spring5.0.x源码阅读环境

时间:2023-03-18
本文章向大家介绍Spring源码阅读(一):使用IDEA搭建Spring5.0.x源码阅读环境,主要内容包括说明、搭建步骤、1. 下载Spring源码、2. 配置Gradle、3. 构建项目、4. 导入IDEA、调试代码、使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。

https://docs.gradle.com/enterprise/compatibility/#gradle_enterprise_gradle_plugin

说明

Spring源码阅读环境配置如下:

  • Spring 5.x版本
  • Gradle 4.8.1
  • JDK8
  • IDEA2020.1
  • win10

搭建步骤

1. 下载Spring源码

下载地址:Github链接,选择5.x版本

如果Github下载过慢,可以使用码云加速,镜像地址

另一种办法是通过梯子配置代理,也可以加速下载

2. 配置Gradle

Spring基于gradle构建,需要先安装配置Gradle

Gradle下载地址,选择complete版本,下载后加入环境变量,通过gradle -v验证是否配置成功

3. 构建项目

在进行预编译之前,需要检查以下几个地方:

  • gradle.properties: 查看版本是否正确
  • jdk版本和gradle版本

在代码目录下执行命令:

gradlew :spring-oxm:compileTestJava

等待编译成功。编译过程可能遇到如下问题:

  • An exception occurred applying plugin request [id: 'com.gradle.build-scan', version: '1.8']

解决办法:Gradle版本问题,具体原因参考此链接

Gradle Build Tool versions Minimum plugin version Maximum plugin version
>= 6.0 3.0 3.3.1
5.0 - 5.6.4 2.0.2 3.3.1
4.1 - 4.10 1.8 1.16
4.0 1.7.4 1.16
2.0 - 3.5 1.0 1.16
< 2.0 not supported not supported
  • org.gradle.api.CircularReferenceException: Circular dependency between the following tasks:
    :spring-beans:compileGroovy
    --- :spring-beans:compileJava
    --- :spring-beans:compileKotlin
    --- :spring-beans:compileGroovy (*)

解决办法:循环引用问题,注释掉下面三行

4. 导入IDEA

File -> New -> Project from Existing Sources -> 找到 Spring 项目路径 -> 选中 build.gradle,并配置gradle,如下图所示


接下来idea会进行很长时间的build,下载相关jar包,耐心等待即可

可能出现如下问题:

  • 缺少jar包:spring-cglib-repack-x.x.x.jar、spring-objenesis-repack-x.x.jar

解决办法:在spring的解压目录下执行下面这两个命令

gradle objenesisRepackJar
gradle cglibRepackJar

调试代码

新建module,编写自己的代码,对spring代码进行走读。

关于module相关知识,可以参考另一篇文章:IDEA中Project和Module的关系

项目右击,New->Module


当然也可以创建基于Maven的module,如下所示:


创建module子项目以后,需要添加module依赖,方便导入相关包。如下所示:


至此,可以写代码了。我们创建一个简单的java bean,并打印。

Person.java:

public class Person {
    private String name;

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }
}
Beans.xml:

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
       xsi:schemaLocation="http://www.springframework.org/schema/beans
    http://www.springframework.org/schema/beans/spring-beans-3.0.xsd">

    <bean id="person" class="org.wds.Person">
        <property name="name" value="zhangsan"/>
    </bean>
</beans>
Main.java:

public class Main {

    public static void main(String[] args) {
        ApplicationContext context =
                new ClassPathXmlApplicationContext("Beans.xml");
        Person obj = (Person) context.getBean("person");
        System.out.println(obj.getName());
    }
}

运行结果如下所示:


至此,环境搭建成功,可以通过打断点对源代码进行调试和走读。




原文地址:https://www.cnblogs.com/exmyth/p/17229284.html