Spring源码分析-源码阅读环境搭建

1,615 阅读1分钟

这是我参与8月更文挑战的第20天,活动详情查看:8月更文挑战

前言

Spring源码不是用的maven管理包之间的依赖的,用的是gradle,很多人准备打算好好阅读一下Spring源码,结果刚开始源码编译就放弃了。下面记录下我搭建的过程。

1. 源码下载

github老是挂掉,我们在gitee下载,fock一个tag版本到自己git上面 下载地址:gitee.com/mirrors/Spr…

比如我直接用fork的master分支

image.png

fork到自己git目录下面方便自己写一些demo和注释

注意:

  1. master 分支需要 JDK 11, 不然编译的时候报错, import jdk.jfr.Category不存在
  2. 5.2.x 分支, JDK8 即可

2. 下载gradle编译工具

2.1 下载gradle

查看Spring-Framework对应的gradle版本

D:\me\Spring-Framework\gradle\wrapper\gradle-wrapper.properties

image.png

去官网找到对应的版本, 官网地址:gradle.org/ image.png

2.2 设置环境变量

设置GRADLE_HOME image.png

设置PATH环境变量

image.png

然后查看一下是否设置成功

image.png

3. 编译

3.1 预编译

1. Precompile `spring-oxm` with `./gradlew :spring-oxm:compileTestJava`

image.png

3.2 设置依赖下载的源

修改build.gradle文件

// 修改之前
repositories {
   mavenCentral()
   maven { url "https://repo.spring.io/libs-spring-framework-build" }
}

// 修改后
repositories {
   maven { url 'https://maven.aliyun.com/repository/public/' }
   maven { url 'https://maven.aliyun.com/repository/spring/'}
   mavenLocal()
   mavenCentral()
}

编译Spring-core模块

image.png

这样环境设置好了,可以开始阅读源码,写一些自己的demo了

4. 例子

/**
 * @author boren
 * @date 2021/8/20 14:21
 */
public class Demo {

   public static void main(String[] args) {
      ClassPathXmlApplicationContext context = new ClassPathXmlApplicationContext("UserBeanTest.xml");
   }
}
public class User {
   private String name;

   public User() {
      System.out.println("hello spring!");
   }

   public User(String name) {
      this.name = name;
   }

   public String getName() {
      return name;
   }

   public void setName(String name) {
      this.name = name;
   }
}
<?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.xsd">

   <bean id="user" class="com.br.spring.User"></bean>

</beans>

执行的结果:

image.png

参考

Introduction to the Spring Framework
Maven 镜像