拉取源码
首先我们到GitHub上找到Spring项目:
将版本切换到5.0.x,然后复制分支链接:https://github.com/spring-projects/spring-framework.git
直接通过idea拉取项目或者使用命令拉取:
项目导入
由于Spring 5之后都是采用Gradle构建的,所以导入项目前本地需要有Gradle环境。
Gradle下载地址:https://gradle.org/releases/
下载完成之后,解压并添加环境变量:
配置好之后通过gradle -v
命令查看gradle版本,如果显示了版本信息,说明配置生效了:
通过Gradle导入:
项目属性设置:
导入之后等待项目构建完成,构建成功之后会看到下图所示:
如果中途构建出错,或者超时了,点击gradle视图中的刷新按钮,会自动重新构建:
编译
先使用gradle进行build:
然后再对项目进行编译:
填坑之旅
1、Kotlin: [Internal Error] java.lang.LinkageError
如果出现这个错可能是Kotlin版本太低或者idea版本太低导致的:
可以尝试升级Kotlin或者升级idea:
GitHub上也有人遇到了这个问题:https://github.com/spring-projects/spring-framework/issues/23354
我的升级完Kotlin
就不报这个错了。
2、Gradle build的过程中checkstyle校验不过
出现这个问题我们可以把去掉checkstyle,首先找到项目根目录的build.gradle
文件:
然后将下图所示的两处地方注释掉,然后重新build就可以了:
3、Error:(43, 16) java: 找不到符号符号: 类 AnnotationCacheAspect位置: 类 org.springframework.cache.aspectj.AspectJCachingConfiguration
原因是因为AnnotationCacheAspect
文件不是class
而是aspect
所以jdk识别不了无法编译。
我们需要安装aspectj.jar
使用Ajc
进行编译。
aspectj.jar
下载地址:https://www.eclipse.org/aspectj/downloads.php
下载好之后,在此文件的同级目录执行java -jar aspectj-1.9.4.jar
命令打开安装界面:
选择jdk安装目录:
设置aspectj
安装位置:
点击install
开始安装:
对AspectJ项目添加Facets,File -> Project Structure:
选择你所需要添加的Module,点击ok:
添加好之后Apply确认:
修改编译器为Ajc
:
找到Java Compiler
,将Use compiler
修改为Ajc
并选择Ajc
的路径,然后勾选中Delegate to Javac
,它的作用是只编译添加了AspectJ的项目,其他则使用Jdk:
测试代码:
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd">
<bean id="myTestBean" class="org.springframework.test.MyTestBean"/>
</beans>
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源码本地环境终于构建成功!