深度解析Spring源码(一)编译Spring源码(spring5.2.x版本)
在学习Spring之前,我们需要先编译Spring源码。我们常说的spring就是spring framework。
spring官网:https://spring.io/
spring源码github地址:https://github.com/spring-projects/spring-framework
工具:idea2020.1,jdk8,构建工具gradle。
1.使用git下载spring源码
git clone https://github.com/spring-projects/spring-framework.git
由于github下载速度比较慢,我们可以使用国内的码云镜像快速下载,或者你可以使用*。
我们在码云中搜索spring-framework,找到 Gitee极速下载:
码云链接:https://gitee.com/mirrors/Spring-Framework.git
哒哒哒,30s下载完成。
2.首先切换到spring目录,并将分支切换到我们想编译的5.2.x
$ cd spring-framework/
$ git checkout 5.2.x
Updating files: 100% (1548/1548), done.
Switched to a new branch '5.2.x'
Branch '5.2.x' set up to track remote branch '5.2.x' from 'origin'.
输入命令,进行编译:
./gradlew build
在这个过程中git会自动帮我们下载gradle,只需耐心等待,大概需要40分钟。
当出现以下内容时说明gradle已经构建spring源码成功。
注意:出现绿色字体BUILD SUCCESSFUL就代表编译成功,出现的错误不用理会。
3.将spring源码导入idea
但是在导入idea之前,还有最后一步:预编译spring-oxm 与 ./gradlew :spring-oxm:compileTestJava
输入命令进行预编译:
./gradlew :spring-oxm:compileTestJava
然后导入到idea中:(File -> New -> Project from Existing Sources -> 找到你的spring文件夹 -> 选择 build.gradle)
在耐心的等待后,我们就可以编码了。
若有需要额外下载jar包,我们可以修改 build.gradle 文件使用阿里云仓库进行加速:
repositories {
mavenCentral()
maven { url "http://maven.aliyun.com/nexus/content/groups/public" }
maven { url "https://repo.spring.io/libs-spring-framework-build" }
}
当出现编译成功且左边的项目变为加粗黑体,就代表我们编译成功了!
此时就可以愉快的撸码了。
4.愉快的撸码
右键new一个moudle,选择gradle。
在build.gradle中引入spring-context依赖:
dependencies {
compile(project(":spring-context"))
testCompile group: 'junit', name: 'junit', version: '4.12'
}
5.代码测试
由下图可以看到,每次都需要编译全文,很麻烦,我们可以通过修改配置更改编译方式:
修改路径:–>File–>Settings–>Build,Excution,Deployment–>BuildTools–>Gradle
如果编译过程中出现任何问题可以随时留言,笔者会及时回复。
关注公众号:关于java,持续为您奉献更多干货。
上一篇: PHP学习宝典-第九章
推荐阅读
-
spring5 源码深度解析----- 事务的回滚和提交(100%理解事务)
-
spring5 源码深度解析----- AOP代理的生成
-
spring5 源码深度解析----- 被面试官给虐懵了,竟然是因为我不懂@Configuration配置类及@Bean的原理
-
基于Spring注解的上下文初始化过程源码解析(一)
-
Mybaits 源码解析 (十二)----- Mybatis的事务如何被Spring管理?Mybatis和Spring事务中用的Connection是同一个吗?
-
spring5 源码深度解析-----ApplicationContext容器refresh过程
-
Mybaits 源码解析 (十)----- 全网最详细,没有之一:Spring-Mybatis框架使用与源码解析
-
spring源码深度解析— IOC 之 默认标签解析(上)
-
spring源码深度解析— IOC 之 循环依赖处理
-
【源码解析】凭什么?spring boot 一个 jar 就能开发 web 项目