当前位置: 首页 > ds >正文

如何阅读Spring源码

如何阅读Spring源码

简介

最近有许多人问我如何阅读Spring源码,那我便在这给出阅读源码的方法,能够保证本地能够让源码能够运行起来。

Spring 源码环境本地编译

Gradle下载地址

通过网盘分享的文件:gradle-6.4.1-all.zip
链接: https://pan.baidu.com/s/1bnBpq6SpyJ3zyFIA204mmQ?pwd=ftgi 提取码: ftgi

Spring源码下载地址

通过网盘分享的文件:spring-framework-master.zip
链接: https://pan.baidu.com/s/1NFjg4MJmYxoEr78ZyMzxMg?pwd=5wrw 提取码: 5wrw

Spring 源码是需要使用 gradle进行编译的,本教程采用 gradle 6.4.1 进行说明; 第二个文件是 spring 5.3 版本的源码。

配置Gradle环境变量

解压gradle-6.4.1-all.zip到任意目录,这些配置一定要根据自己实际解压的目录去配置否则会找不到!!!

配置 GARDLE_HOME

image-20250718224411921

配置path

image-20250718224628187

解压 spring-framework-master

修改 settings.gradle 文件

添加国内阿里云依赖地址:

maven { url 'https://maven.aliyun.com/repository/public' }

image-20250718224847325

修改 gradle.properties 文件

将 org.gradle.jvmargs的值修改为 -Xmx2048M; 并添加 org.gradle.daemon=true

image-20250718224922585

修改 build.gradle 文件

加上使用阿里云仓库,提高下载速度

maven { url 'https://maven.aliyun.com/nexus/content/groups/public/' }
maven { url 'https://maven.aliyun.com/nexus/content/repositories/jcenter'}

image-20250718225006645

修改setting.gradle 删除 第11 行

image-20250718225033305

修改 build.gradle 第29 行

删除 snapshot

image-20250718225105803

修改代码

修改spring-framework-master\buildSrc\src\main\java\org\springframework\build\compile\CompilerConventionsPlugin.java 代码,删除第 62 行的 “-Werror”, 注意把之前的逗号也删掉(或者可以直接用我的覆盖Static代码)

static {List<String> commonCompilerArgs = Arrays.asList("-Xlint:serial", "-Xlint:cast", "-Xlint:classfile", "-Xlint:dep-ann","-Xlint:divzero", "-Xlint:empty", "-Xlint:finally", "-Xlint:overrides","-Xlint:path", "-Xlint:processing", "-Xlint:static", "-Xlint:try", "-Xlint:-options");COMPILER_ARGS = new ArrayList<>();COMPILER_ARGS.addAll(commonCompilerArgs);COMPILER_ARGS.addAll(Arrays.asList("-Xlint:varargs", "-Xlint:fallthrough", "-Xlint:rawtypes", "-Xlint:deprecation","-Xlint:unchecked"));TEST_COMPILER_ARGS = new ArrayList<>();TEST_COMPILER_ARGS.addAll(commonCompilerArgs);TEST_COMPILER_ARGS.addAll(Arrays.asList("-Xlint:-varargs", "-Xlint:-fallthrough", "-Xlint:-rawtypes","-Xlint:-deprecation", "-Xlint:-unchecked", "-parameters"));
}

编译

编译 spring-oxm

进入spring源码的位置使用cmd进入控制台,运行以下命令(第一次下载会比较慢):

gradle.bat :spring-oxm:compileTestJava

看到如下则证明依赖下完了

image-20250718225628524

编译spring-core 模块

编译完成后,在执行一下命令:

gradle.bat :spring-core:compileTestJava

看到如下则证明编译完了

image-20250718225819546

将Spring源码导入 idea 并进行配置

验证源码是否可用

在源码目录下新建一个模块

build.gradle中的依赖如下:

plugins {id 'java'
}group = 'org.spring'
version = '5.3.0-SNAPSHOT'repositories {mavenLocal()maven{url 'https://maven.aliyun.com/nexus/content/groups/public'}maven{url 'https://maven.aliyun.com/nexus/content/repositories/jcenter'}mavenCentral()
}dependencies {testCompile group: 'junit', name: 'junit', version: '4.12'compile(project(":spring-context"))}test {useJUnitPlatform()
}
测试

image-20250718230001908

结果

image-20250718230237976

结尾

至此,已经能够保证本地Spring源码是能够使用的了,如有小白有配置上的问题,欢迎后台私信哟,看见会马上回复的。

http://www.xdnf.cn/news/15815.html

相关文章:

  • 【LVGL】Linux LVGL程序几十分钟后UI卡死
  • effective python 条款11 学会对序列做切片
  • Onload 用户指南 (UG1586)-笔记
  • 【机器学习】安装Jupyter及基本操作
  • 内存泄漏系列专题分析之二十九:高通相机CamX--Android通用GPU内存分配和释放原理
  • 虚拟商品自动化实践:闲鱼订单防漏发与模板化管理的技术解析
  • JVM常用运行时参数说明
  • 【C# in .NET】17. 探秘类成员-构造函数与析构函数:对象生命周期管理
  • [3-02-01].第01章:框架概述 - Spring生态
  • 基于Spring Boot的农村农产品销售系统设计与实现
  • 【Python】DRF核心组件详解:Mixin与Generic视图
  • ARINC818航空总线机载视频处理系统设计
  • 第二篇 html5和css3开发基础与应用
  • 28、鸿蒙Harmony Next开发:不依赖UI组件的全局气泡提示 (openPopup)和不依赖UI组件的全局菜单 (openMenu)、Toast
  • 数据结构入门:像整理收纳一样简单!
  • Jmeter系列(6)-测试计划
  • 李超线段树模板
  • Vue3 中使用 Element Plus 实现自定义按钮的 ElNotification 提示框
  • 「源力觉醒 创作者计划」_巅峰对话:文心 4.5 vs. DeepSeek / Qwen 3.0 深度解析(实战优化版)
  • Matlab打开慢、加载慢的解决办法
  • 构建直播平台大体的流程
  • 后端参数校验
  • Docker部署前后端分离项目——多项目共享环境部署
  • AI进入自动驾驶时代:OpenAI发布革命性ChatGPT Agent
  • 关于在VScode中使用git的一些步骤常用命令及其常见问题:
  • 从 C# 到 Python:6 天极速入门(第二天)
  • 【PTA数据结构 | C语言版】二叉堆的快速建堆操作
  • 数据结构:顺序表和链表
  • LeetCode1047删除字符串中的所有相邻重复项
  • Jenkins+Docker+Git实现自动化CI/CD