首先我们需要下载一套源码到本地
下载方式
-
Git clone
安装了Git可以直接clone到本地
源码版本选择
本来直接clone的最新版本,但是一直报各种错,参考了官方说明才知道最新版本已经需要JDK17了(已哭晕...)
我们如果还有想用JDK8,需要选择较前版本
查看GitHub的更新情况,最近的一个稳定版本是5.2.21.RELESE
GA即General Availability,表示正式发布的版本(国外通常用 GA 来标识 release 版本,GA 版本是开发团队认为该版本是稳定版(也有使用Stable/Production的),可以在生产环境中使用。
我这边使用的是JDK8,所以选择分支版本
git clone -b 5.2.x https://github.com/spring-projects/spring-framework.git
导入idea
选择Gradle工程
idea会自动加载,等他加载好
报错处理(未遇到,可跳过)
如果报了POM relocation to an other version number is not fully supported in Gradle : xml-apis:xml-apis:2.0.2 relocated to xml-apis:xml-apis:1.0.b2.的错
大致意思是需要将xml-apis:xml-apis的版本换为1.0.b2,在项目中全局搜索xml-apis
尝试在项目根目录下的build.gradle文件中添加如下代码,指定xml-apis的版本为1.0.b2
configurations.all {
resolutionStrategy {
force 'xml-apis:xml-apis1.0.b2'
}
}
重新加载
测试
新建module
按下图选择,然后next,起个名,完成~
修改配置
在新建module中的build.gradle中添加如下配置:
compile(project(":spring-context"))
新建类
记得刷新gradle,然后新建文件(我这边建了一个启动类+一个配置类+一个实体类)进行测试
代码如下:
AqinApplication.java
package com.aqin;
import org.springframework.context.annotation.AnnotationConfigApplicationContext;
/**
* @author aqin1012 AQin.
* @date 2022/4/18 4:16 PM
* @Version 1.0
*/
public class AqinApplication {
public static void main ( String [] args ) {
AnnotationConfigApplicationContext context = new AnnotationConfigApplicationContext ( JavaConfig.class ) ;
System.out.println ( context.getBean ( AqinEntity.class )) ;
}
}
AqinEntity.java
package com.aqin;
import org.springframework.stereotype.Component;
/**
* @author aqin1012 AQin.
* @date 2022/4/18 4:17 PM
* @Version 1.0
*/
@Component
public class AqinEntity {
String name;
Integer age;
}
JavaConfig.java
package com.aqin;
import org.springframework.context.annotation.ComponentScan;
import org.springframework.context.annotation.Configuration;
/**
* @author aqin1012 AQin.
* @date 2022/4/18 5:00 PM
* @Version 1.0
*/
@Configuration
@ComponentScan ( "com.aqin" )
public class JavaConfig {
}
查看测试结果
加上断点,debug进行测试,下图可以看到新建的实体类已经被spring容器加载进去啦,撒花🎉🎉🎉~~~
-
网页下载
下载需要的压缩版本即可,如果GitHub打不开可以clone我在gitee上用spring5源码的创建项目:gitee.com/aqin1012/sp…
常见报错通用处理方式
如果按照本文的所有版本仍出现了一些奇奇怪怪的报错,请检查以下三个地方
-
编译工具
1⃣️ 是否是自己本地gradle的路径
2⃣️ 默认都是Gradle,可尝试如图中选项配置
3⃣️ 选择Specified location,后面选择本地gradle的路径
4⃣️ 选择本地的1.8版本JDK
-
编译器
1⃣️ 选择1.8版本
-
项目结构
1⃣️ 选择本地安装的1.8版本JDK
2⃣️ 选择SDK 8
-
JDK环境
查看本机安装的jdk版本
终端运行:
$ /usr/libexec/java_home -V
输出:
如果你电脑上安装了多个JDK版本,此处就都会显示出来,如果下载了我上传的源码安装包,按照本教程一步一步进行仍然报一些什么Kotlin之类的版本问题、或者诸如已经导入的文件找不到等问题,建议可以把除JDK8以外的版本卸载(移除/Library/Java/JavaVirtualMachines/目录下的该版本文件夹,前提确定好这个版本你有没有项目在用哈,,别轻易卸载导致后面忽然发现那个程序运行不起来就尴尬了= =)
这是最后的办法= =,我之前一直出一些乱七八糟的问题找不到解决方法的时候,就发现我除了JDK8还安装了JDK17,把17卸载了就一切正常(但是我其实是在.bash_profile做了多环境配置的,编译源码的时候也做了环境切换,但是不知道为什么还是会出问题,希望了解原因的同学可以指点下,谢谢>>>抱拳.gif)
Matching Java Virtual Machines (1):
1.8.0_311 (x86_64) "Oracle Corporation" - "Java SE 8" /Library/Java/JavaVirtualMachines/jdk1.8.0_311.jdk/Contents/Home
/Library/Java/JavaVirtualMachines/jdk1.8.0_311.jdk/Contents/Home