Spring源码本地环境搭建

拉取源码

首先我们到GitHub上找到Spring项目:
Spring源码本地环境搭建_第1张图片

将版本切换到5.0.x,然后复制分支链接:https://github.com/spring-projects/spring-framework.git
Spring源码本地环境搭建_第2张图片

直接通过idea拉取项目或者使用命令拉取:
Spring源码本地环境搭建_第3张图片
Spring源码本地环境搭建_第4张图片

项目导入

由于Spring 5之后都是采用Gradle构建的,所以导入项目前本地需要有Gradle环境。
Gradle下载地址:https://gradle.org/releases/

下载完成之后,解压并添加环境变量:
Spring源码本地环境搭建_第5张图片
Spring源码本地环境搭建_第6张图片
配置好之后通过gradle -v命令查看gradle版本,如果显示了版本信息,说明配置生效了:
Spring源码本地环境搭建_第7张图片

通过Gradle导入:
Spring源码本地环境搭建_第8张图片

项目属性设置:
Spring源码本地环境搭建_第9张图片

导入之后等待项目构建完成,构建成功之后会看到下图所示:
Spring源码本地环境搭建_第10张图片
如果中途构建出错,或者超时了,点击gradle视图中的刷新按钮,会自动重新构建:
Spring源码本地环境搭建_第11张图片

编译

先使用gradle进行build:
Spring源码本地环境搭建_第12张图片
然后再对项目进行编译:
Spring源码本地环境搭建_第13张图片

填坑之旅

1、Kotlin: [Internal Error] java.lang.LinkageError
如果出现这个错可能是Kotlin版本太低或者idea版本太低导致的:
Spring源码本地环境搭建_第14张图片
可以尝试升级Kotlin或者升级idea:
Spring源码本地环境搭建_第15张图片
Spring源码本地环境搭建_第16张图片
GitHub上也有人遇到了这个问题:https://github.com/spring-projects/spring-framework/issues/23354
Spring源码本地环境搭建_第17张图片
我的升级完Kotlin就不报这个错了。

2、Gradle build的过程中checkstyle校验不过
出现这个问题我们可以把去掉checkstyle,首先找到项目根目录的build.gradle文件:
Spring源码本地环境搭建_第18张图片
然后将下图所示的两处地方注释掉,然后重新build就可以了:
Spring源码本地环境搭建_第19张图片
Spring源码本地环境搭建_第20张图片
3、Error:(43, 16) java: 找不到符号符号: 类 AnnotationCacheAspect位置: 类 org.springframework.cache.aspectj.AspectJCachingConfiguration
Spring源码本地环境搭建_第21张图片
原因是因为AnnotationCacheAspect文件不是class而是aspect所以jdk识别不了无法编译。

我们需要安装aspectj.jar使用Ajc进行编译。

aspectj.jar下载地址:https://www.eclipse.org/aspectj/downloads.php
Spring源码本地环境搭建_第22张图片
下载好之后,在此文件的同级目录执行java -jar aspectj-1.9.4.jar命令打开安装界面:
Spring源码本地环境搭建_第23张图片
Spring源码本地环境搭建_第24张图片
选择jdk安装目录:
Spring源码本地环境搭建_第25张图片
设置aspectj安装位置:
Spring源码本地环境搭建_第26张图片
点击install开始安装:
Spring源码本地环境搭建_第27张图片
对AspectJ项目添加Facets,File -> Project Structure:
Spring源码本地环境搭建_第28张图片
选择你所需要添加的Module,点击ok:
Spring源码本地环境搭建_第29张图片
添加好之后Apply确认:
Spring源码本地环境搭建_第30张图片
修改编译器为Ajc
Spring源码本地环境搭建_第31张图片
找到Java Compiler,将Use compiler修改为Ajc并选择Ajc的路径,然后勾选中Delegate to Javac,它的作用是只编译添加了AspectJ的项目,其他则使用Jdk:
Spring源码本地环境搭建_第32张图片
测试代码:




	

public class Test {
	public static void main(String[] args) {
		BeanFactory beanFactory = new XmlBeanFactory(new ClassPathResource("beanFactoryTest.xml"));
		MyTestBean bean = (MyTestBean) beanFactory.getBean("myTestBean");
		bean.outStr();
	}
}

class MyTestBean {

	public void outStr() {
		System.out.println("myTestBean");
	}
}

运行,成功输出:
在这里插入图片描述
一波三折,Spring源码本地环境终于构建成功!

你可能感兴趣的:(Spring源码分析)