Spring源码分析-Spring源码编译
Posted 石头上的叶子
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Spring源码分析-Spring源码编译相关的知识,希望对你有一定的参考价值。
1 下载源码
1.1 fork源码
由于从github网络下载太慢,就直接在gitee下载了gitee源码镜像,fork主要是为了可以添加注释
2.2 下载源码
将fork的源码clone到本地
git clone https://gitee.com/Yezi-up/Spring-Framework.git
2.3 切换分支
因为本次查看的源码是基于5.2,所以先切换分支再导入到idea
git checkout -b 5.2.x origin/5.2.x
2 导入到IDEA中
2.1 直接通过IDEA导入项目
第一次打开大概需要15-20分钟
2.2 查看当前的版本
gradle.properties 中查看,我们编译的版本为 5.2.19.BUILD-SNAPSHOT
version=5.2.19.BUILD-SNAPSHOT
org.gradle.jvmargs=-Xmx1536M
org.gradle.caching=true
org.gradle.parallel=true
3 使用源码并调试
可以先修改项目的编译和运行方式,默认是Gradle
,使用这种方式可以直接运行 3.1 中的例子,如果换为 IntelliJ IDEA
则会碰到一些问题,在 3.2 中是解决方式。
但是换成IntelliJ IDEA
执行时会快很多
3.1 创建使用源码的应用
3.1.1 创建model为spring-example,并且添加spring-context引用
plugins {
id \'java\'
}
group \'org.springframework\'
version \'5.2.19.BUILD-SNAPSHOT\'
repositories {
mavenCentral()
}
dependencies {
testImplementation \'org.junit.jupiter:junit-jupiter-api:5.7.0\'
testRuntimeOnly \'org.junit.jupiter:junit-jupiter-engine:5.7.0\'
compile(project(":spring-context")) // 添加spring的依赖
}
test {
useJUnitPlatform()
}
3.1.2 注入容器中的bean
public class Student {
public String name = "zhangsan";
@Override
public String toString() {
return "Student{" +
"name=\'" + name + \'\\\'\' +
\'}\';
}
}
3.1.3 将Student注册到ioc容器,并从容器中取出bean
public class Test {
public static void main(String[] args) {
// 实例化 ioc容器
AnnotationConfigApplicationContext applicationContext = new AnnotationConfigApplicationContext();
applicationContext.register(Student.class);
// 初始化 容器
applicationContext.refresh();
System.out.println(applicationContext.getBean(Student.class));
}
}
3.1.4 执行结果
- 使用gradle编译执行,需要3秒多
- 使用Idea编译执行,基本秒级,第一次会慢点
以上是关于Spring源码分析-Spring源码编译的主要内容,如果未能解决你的问题,请参考以下文章
初识Spring源码 -- doResolveDependency | findAutowireCandidates | @Order@Priority调用排序 | @Autowired注入(代码片段
初识Spring源码 -- doResolveDependency | findAutowireCandidates | @Order@Priority调用排序 | @Autowired注入(代码片段