spring 源码导入 idea

315 阅读3分钟

一起养成写作习惯!这是我参与「掘金日新计划 · 4 月更文挑战」的第1天,点击查看活动详情

含章可贞,或从王事,无成有终。

前言

spring 是在项目开发的常用框架,spring 的源码阅读和学习也是一项程序员必备的基本功,从今天开始将会学习 spring 的源码,汇总学习心得和体会,提高自己的编码和设计能力。

源码准备

阅读spring 源码需要先下载,首选的 github 上进行下载,如果网速慢的话,可以考虑在gitee 上进行仓库的导入,然后再从 gitee 上进行下载:

github-springframework

# spring-framework github 源码地址
https://github.com/spring-projects/spring-framework

gitee-进行导入

在项目开发中,一般采用git 进行代码的版本管理,在 windows 系统中就需要安装git,这里推荐一款可以免安装的工具,不必安装 git 也可以像在Linux上操作windows,这就是 cmder ,个人比较喜欢 cmder ,带有半透明的对话框。

# cmder 下载地址
https://cmder.net/

cmder 与 git 的对比 关于怎么

在windows 环境上配置git 就不说了,大家可以自行百度,下载 spring 源码

# 切换到 5.3.x 分支上
git checkout -b 5.3.x  origin/5.3.x

由于 spring 项目采用的是 gradle 进行版本管理,而不是maven ,所以事先需要下载并安装 gradle ,这里 5.3.x 的版本对应的 gradle 版本是 7.2,下载地址如下所示:

# gradle 下载地址
https://gradle.org/install/
# 下载完成后需要进行解压并配置环境变量 GRADLE_HOME 和 Path 

准备就绪后,能到的以下的信息

源码编译

打开 idea ,导入项目代码,刚导入后的代码是下图的样子,然后找到图示的如图所示的文件进行修改,避免从网络下载 gradle 文件。

# 文件修改地址
spring-framework\gradle\wrapper\gradle-wrapper.properties
# 修改的内容如下所示,这里的位置是自己gralde 文件的位置
distributionUrl=file\:///d:/service/gradle-7.2-bin.zip

gralde 作为一个依赖管理工具,其作用和maven 是相似的,如下图所示:

  • 1 在解压后的 gralde 目录中,需要创建 init.d 目录,并创建 init.gradle 文件。编辑以下内容
allprojects{
    repositories {
        def REPOSITORY_URL = 'http://maven.aliyun.com/nexus/content/groups/public/'
        all { ArtifactRepository repo ->
            if(repo instanceof MavenArtifactRepository){
                def url = repo.url.toString()
                if (url.startsWith('https://repo1.maven.org/maven2') || url.startsWith('https://jcenter.bintray.com/')) {
                    project.logger.lifecycle "Repository ${repo.url} replaced by $REPOSITORY_URL."
                    remove repo
                }
            }
        }
        maven {
		    allowInsecureProtocol = true
            url REPOSITORY_URL
        }
    }
}

  • 2 在spring 源码编译过程中,会出现不能使用阿里云仓库的问题,因为阿里云的仓库是 http而不是 https ,所以需要在 repositories 中配置 allowInsecureProtocol = true 以便能够正常的进行编译。

最终产生的配置文件如下图所示:

在项目中配置 gradle home 指定本地的gradle 安装目录,并设置 gralde jvm 为 1.8 ,在 spring 5.x 之后已经采用了lambda 表达式进行编码,所以需要 jdk1.8 进行项目的编译。

完成上的配置工作以后就可以进行spring 项目的编译,在 idea 右边有 gralde 的选项卡,进行项目的编译,完成后则可以看到图示的效果。最终在编译控制台可以看到:

# 最终就可以看到build 成功的结果
BUILD SUCCESSFUL 

总结

在本文中详细讲解了 spring 项目源码的下载和编译,这只是源码阅读的开始,在后续的文章中将会按照热点知识进行分类讲解。