Spring源码解析-1.源码编译
学习目标
- spring源码编译
- 创建gradle模块验证
源码编译:
- GitHub搜索spring-framework,这里选择5.2x的版本下载zip包。
- 下载好源码之后,解压并修改build.gradle文件中的仓库地址,加快编译速度。
repositories {
mavenCentral()
// =====阿里云镜像start=====
maven { url "https://maven.aliyun.com/nexus/content/groups/public/"}
maven { url "https://maven.aliyun.com/nexus/content/repositories/jcenter"}
// =====阿里云镜像end=====
maven { url "https://repo.spring.io/libs-spring-framework-build" }
}
- 预编译
根据官方编译文档,在解压之后的目录下执行预编译spring-oxm模块,编译命令如下:
gradlew :spring-oxm:compileTestJava
进入源码目录,进入cmd窗口,执行上述命令,等待编译成功即可。
- 导入IDEA编译
将源码导入idea,修改settings.gradle文件,将spring-aspects模块注释掉。之后等待idea自动下载gradle并开始编译,等待编译成功即可。(修改IDEA gradle设置)
新建Gradle模块
- 创建module
- 项目名称取名叫 spring-demo,项目build.gradle文件中添加
compile(project(":spring-context"))
依赖
- 创建bean扫描配置文件
- 创建类加入spring容器,编写测试类测试
IUserService
public interface IUserService {
}
UserService
@Service
public class UserService implements IUserService {
public UserService() {
System.out.println(this.getClass().getSimpleName() + "构造方法...");
}
}
验证方法
运行结果如下:
至此spring源码编译成功、验证成功。
问题汇总
1、CoroutinesUtils找不到该类
Error:(354, 51) java: 找不到符号
符号: 变量 CoroutinesUtils
位置: 类 org.springframework.core.ReactiveAdapterRegistry.CoroutinesRegistrar
解决方法:
点击File -> Project Structure -> Libraries -> + -> Java,然后选择spring-framework/spring-core/kotlin-coroutines/build/libs/kotlin-coroutines-5.2.4.BUILD-SNAPSHOT.jar,在弹出的对话框中选择spring-core.main,在重新build项目即可。
1)打开Project Structure:
2)导入jar包:
3)选择kotlin-coroutines-5.2.23.BUILD-SNAPSHOT.jar:
4)选择spring-core.main:
5)最后重新build项目即可。