ICode9

精准搜索请尝试: 精确搜索
首页 > 编程语言> 文章详细

Spring源码分析(一)-Spring源码编译

2021-12-11 19:34:48  阅读:142  来源: 互联网

标签:5.2 Spring 编译 源码 Student 3.1 org


1 下载源码

1.1 fork源码

由于从github网络下载太慢,就直接在gitee下载了gitee源码镜像,fork主要是为了可以添加注释
image.png

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分钟
image.png

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执行时会快很多
image.png

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 执行结果

  1. 使用gradle编译执行,需要3秒多

image.png

  1. 使用Idea编译执行,基本秒级,第一次会慢点

    标签:5.2,Spring,编译,源码,Student,3.1,org
    来源: https://www.cnblogs.com/xsure/p/15676755.html

    本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
    2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
    3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
    4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
    5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有