概述
该项目基于以下环境构建:
- IntelliJ IDEA 2023.1.4
- Gradle 7.5.1
- JAVA 11
- Spring 5.3.x
下载 Gradle
下载概述中对应的版本,放到本地的任意目录,后续配置到 IDEA。
下载 Spring 源码
bash
git clone -b 5.3.x https://github.com/spring-projects/spring-framework.git
注意:如果是直接下载的
ZIP
文件,可能遇到以下问题:(非常不建议直接下载zip
包构建,想知道原因可以继续看,最后我也没有构建成功,而是直接通过clone
构建的。)问题原因:缺少
git
配置,但是即使使用git init
创建后依然报错。原因参考:issues 地址:github.com/spring-proj...
大概意思:
zip
是用来分享源码的,而利于构建。因此推荐使用clone
下载
提高clone
速度的建议:因为
spring
包比较大,可能需要很多时间下载,这里提供目前可行的办法提高速度:
- 安装油猴,安装名为
GitHub增强
的油猴插件- 重新打开
使用对应的镜像下载可提速,推荐使用香港或台湾的镜像,比较稳定。
Idea配置
配置Gradle
打开 file-> New Projects Setup -> Setting for new Project...
配置新项目的Gradle
的环境路径。

Idea打开Spring源码
配置加速镜像
build.gradle文件
添加阿里云镜像
bash
repositories {
mavenCentral()
maven { url "https://repo.spring.io/libs-spring-framework-build" }
## 添加以下配置
maven { url "https://maven.aliyun.com/repository/public" }
maven { url 'https://maven.aliyun.com/nexus/content/groups/public/' }
maven { url 'https://maven.aliyun.com/nexus/content/repositories/jcenter'}
}
settings.gradle文件
添加阿里云镜像
bash
pluginManagement {
repositories {
mavenCentral()
gradlePluginPortal()
maven { url "https://repo.spring.io/release" }
## 添加以下配置
maven { url "https://maven.aliyun.com/repository/public" }
}
}
gradle.properties文件
bash
version=5.3.39-SNAPSHOT
## 设置此参数主要是编译下载包会占用大量的内存,可能会内存溢出
org.gradle.jvmargs=-Xmx2048m
## 开启 Gradle 缓存
org.gradle.caching=true
## 开启并行编译
org.gradle.parallel=true
## 开启守护进程 通过开启守护进程,下一次构建的时候,将会连接这个守护进程进行构建,而不是重新fork一个gradle构建进程
org.gradle.daemon=true
kotlin.stdlib.default.dependency=false
配置完重启IDEA,等待后台自动下载依赖,自动构建完成。大概需要十到二十分钟左右。
验证成果
创建module

配置模块的build.gradle文件
导入spring核心依赖
bash
dependencies {
testImplementation platform('org.junit:junit-bom:5.9.1')
testImplementation 'org.junit.jupiter:junit-jupiter'
## 添加以下依赖
implementation(project(":spring-context"))
}
构建新模块遇到的问题
1. 类过时警告
报错详情:
bash
spring-core\src\main\java\org\springframework\core\CoroutinesUtils.java:74:
警告: [deprecation] AccessibleObject中的isAccessible()已过时
if (method.isAccessible() && !KCallablesJvm.isAccessible(function)) {
解决方案:
在 org.springframework.core.CoroutinesUtils.invokeSuspendingFunction(Method method, Object target, Object... args)
方法上加 @SuppressWarnings("deprecation")
注解即可。
2.Task 'prepareKotlinBuildScriptModel' not found in project ':app' 报错
在当前模块下的bulid.gradle
里,加上以下代码
bash
tasks.register("prepareKotlinBuildScriptModel"){}
创建实例
java
@Component
public class User {
@Override
public String toString() {
return "User{}";
}
}
记得添加@Component
注解
创建Main方法
java
@Configuration
@ComponentScan("")
public class SpringNeoMain {
public static void main(String[] args) {
AnnotationConfigApplicationContext applicationContext = new AnnotationConfigApplicationContext(SpringNeoMain.class);
System.out.println("applicationContext.getBean(User.class) = " + applicationContext.getBean(User.class));
}
}
模块结构

运行结果
