前言
无论是在工作中还是在面试中,Spring是Java程序员一定会接触的框架,并且现在不是有说我们是基于Spring编程吗,所以Spring的重要性可想而知。那么阅读Spring源码,了解其底层知识,也就显得十分重要了,而阅读Spring源码的第一步就是编译Spring源码,下面文章便开始介绍如何进行Spring源码的编译。
1、预先准备
- JDK 1.8.0_212 (现在一般来说都是1.8的了吧,1.8以上应该没啥问题,但是我没试过)
- IntelliJ IDEA 2018.2.4 (版本高一些,应该问题不大,但是我没试过)
- Spring 5.1.x
就只需要这三个就够了,可能有读者会问Spring源码不是基于gradle的吗?怎么没有gradle,其实gradle我们使用IDEA自带的就可以了,不需要额外下载!
2、下载Spring源码
1、从github上下载Spring源码,下载地址 https://github.com/spring-projects/spring-framework
我这里下载的版本是5.1.x
下载没有VPN毕竟有些慢,我这里把压缩包直接提供给你们
链接:https://pan.baidu.com/s/1tZoLONJ0fxkW1YTIU5oubg
提取码:m3zo
2、按自己需求找一个文件夹,存放下载下来的Spring源码压缩包
我就放在D盘下的Spring文件夹下面了
直接解压,压缩包就没啥用了。
这在里应该是可以更换gradle的镜像源,反正我没换过,大家要是觉得慢可以更换试试。
3、IDEA导入Spring源码
1、首先需要对IDEA进行一些全局的设置
若是你已经打开了项目,那么点击这个按钮就可以进入全局设置
进入全局设置的 settings
2、随便进入一个项目,导入Spring源码
点击这个按钮
选择Spring的文件夹,点击ok
选择这个
设置完成,就点击Finish
4、IDEA构建Spring源码
进来后就是这个界面了,就是在开始构建Spring源码,这其中就会下载依赖,过程会比较慢,取决于你的网速,有可能几十分钟,有可能几小时,有可能一天多,,,,,
下载显示绿色就是下载成功,但是有时候有些依赖也会显示红色,表示下载失败,这是正常的,暂时不用管,等到整个项目构建完成后,点击gradle的刷新按钮,他就会继续下载那些失败了的依赖。若是你中途关闭idea,也是没问题的,重新打开后也会继续构建,若是不能继续构建,还是点击gradle的刷新按钮。
(注意:构建必须全部显示绿色,才是构建成功,构建完毕若是有红色那就点刷新,下载失败的依赖)
我这一次网速比较顺利,几小时就构建好了,并且没有报红
构建好的项目就长这个样子
5、IDEA编译Spring源码
1、在编译Spring源码之前,还需要一个步骤
点击这个按钮,就会下载一个jar包,若是没有这个jar包,后面运行程序可能会报错,这个步骤需要等待一会
这个样子就是build成功了
2、编译spring-context模块
运行spring-context的测试类,运行后就会将里面的java文件编译成class文件
运行的过程中,报一些错是正常的,毕竟你也没有Spring作者的全部环境,让其运行完毕就好了
这就运行完毕了,报错不用管
6、创建自己的模块进行测试
1、创建自己的模块
选择Gradle,点击next
输入需要创建的包名
点击Finish
等待我们自己的包创建完毕
这就是创建完毕了,创建完毕IDEA会打开我们所有包
2、自己的模块引入spring-context模块
compile(project(":spring-context"))
3、编写测试代码
测试类结构
AppConfig.java
@Configurable
@ComponentScan("com.chenxi")
public class AppConfig {
}
UserService.java
@Component
public class UserService {
}
Test.java
public class Test {
public static void main(String[] args) {
AnnotationConfigApplicationContext ac =
new AnnotationConfigApplicationContext(AppConfig.class);
UserService userService = ac.getBean(UserService.class);
System.out.println(userService);
}
}
运行结果(第一次运行会有点慢):
完美!!!!这样Spring源码就编译完成了!!!!!!!!!!!