Spring源码学习之旅 先搞定环境再说!

下载Spring源码,编译源码

前提

请先确保已经安装过JDK,Gradle,Git
如果不会,自行百度,这个太过基础了

如何下载源码

1.Spring官方github地址

OK,如果你的网比较好,或者有比较好的梯子,那么可以方便的从github上同步spring官方的代码到本地。
你只需要执行一下 git clone [email protected]:spring-projects/spring-framework.git 即可

SpringFramework官方仓库地址

2.gitee 转 github

如果不幸的是,你的网并不好,无法从github上拉取如此大量的代码,那么有个简单的方法就是从码云上拉github的代码。
具体的玩法见下面的图

  1. 在码云的右上角点击+号,选择从github导入仓库,这个功能是导入自己或者别人在github/gitlab上的仓库,按箭头步骤来创建即可得到自己的与github同步的代码仓库
    Spring源码学习之旅 先搞定环境再说!_第1张图片
  2. 如果还是不想弄,直接下载我弄到码云上的代码

码云版本Spring 仓库

切换分支

自行通过git 切换到想看源码的分支TAG上去
比如,想看5.2.6.RELEASE版本的代码,只需要
git checkout -b learning v5.2.6.RELEASE

如何编译源码

国内访问国外的jar包仓库是有点费劲的,所以第一件事就是将依赖源修改一下
找到 build.gradle 文件
搜索 repositories
增加依赖源,我这里加的是阿里的

		repositories {
			//增加阿里源
			maven { name "Alibaba" ; url "https://maven.aliyun.com/repository/public" }
			mavenCentral()
			maven { url "https://repo.spring.io/libs-spring-framework-build" }
		}

这里补充下,如果你发现下载jar包的存放地址变成了user/.m2 说明你没有把gradle的环境变量配置好,检查你的GRADLE_USER_HOME 环境变量是否配置了,将其指向你的本地仓库地址就好了

接下来打开IDEA,将项目导入
Spring源码学习之旅 先搞定环境再说!_第2张图片

但是这时候项目还是未经过编译的,所以接下来,想编译项目,在IDEA的Terminal窗口里输入
gradlew build
这个会耗时非常非常非常非常长,所以可以单独对项目进行编译
以spring-context为例,编译它,只需要输入
gradlew :spring-context:compileTestJava

在这里插入图片描述

编译成功后,会在spring-context/build/libs/ 目录下看到编译好的jar,后面有大用

创建学习工程

  1. 通过IDEA 创建一个普通的maven或者gradle工程即可
  2. 引用要学习的版本的spring-context.jar
    Spring源码学习之旅 先搞定环境再说!_第3张图片
  3. 在resouces目录下创建config目录 ,建一个spring.xml文件,通过标签添加第一个bean

Spring源码学习之旅 先搞定环境再说!_第4张图片
4. 对应的类如下

/**
 * @author Xiaoyingge
 * @description
 * @date 2020/5/23 0:44
 */
public class BeanXml {

    public String hello () {
        return "hello world";
    }
}
  1. 创建测试类
/**
 * @author Xiaoyingge
 * @description
 * @date 2020/5/23 0:47
 */
public class XmlTests {

    public static void main (String[] args) {
        ClassPathXmlApplicationContext classPathXmlApplicationContext = new ClassPathXmlApplicationContext("config/spring.xml");
        BeanXml hello = (BeanXml) classPathXmlApplicationContext.getBean("hello");
        System.out.println(hello.hello());
    }
}

Spring源码学习之旅 先搞定环境再说!_第5张图片

切换jar包

  1. 在learning项目中(非spring源码项目中)选中要替换的jar包,右键 Open Library Settings(或者F4)

Spring源码学习之旅 先搞定环境再说!_第6张图片

  1. 选中source和library ,统统删除

Spring源码学习之旅 先搞定环境再说!_第7张图片

  1. 再点击添加按钮
    Spring源码学习之旅 先搞定环境再说!_第8张图片

  2. 选中对应的lib,点击 OK

Spring源码学习之旅 先搞定环境再说!_第9张图片

  1. 再次点击添加,这次选中SRC目录

Spring源码学习之旅 先搞定环境再说!_第10张图片

  1. OK ,回到测试的代码中,点击ClassPathXmlApplicationContext的类,就能看到刚才我们在源码里加的代码已经出现在了这里,打上断点
    Spring源码学习之旅 先搞定环境再说!_第11张图片

  2. debug一下,你会看到你添加的代码也生效了,后面就可以一边向源码添加注释一边调试了,不过每次添加完注释后,会引起class代码行数变化,记得重新编译jar包出来
    Spring源码学习之旅 先搞定环境再说!_第12张图片

OK,最后的最后,记得如果改了注释,需要重新编译,不需要重新配置jar包的替换,但是如果引入新的jar包,会导致仓库刷新,需要重新配置,一般建议需要引jar包时,一次性搞到位,省得后面还要一个个换,麻烦!!

你可能感兴趣的:(#,Spring)