100%学会搭建Spring源码环境

文章目录

          • (1)注意事项
          • (2)配置Gradle
          • (3)下载Spring源码
          • (4)IDEA导入Spring源码编译
          • (5)创建自定义模块测试

(1)注意事项

虽然编译Spring源码不是什么复杂的事,但确实自己在编译过程中出现了很多的问题,导致自己也进行了十多次的尝试后才编译成功,遇到问题不可怕,只要坚持去分析解决问题总会不断缩小,最终解决问题,下面是自己的一些经验分享,

1:JDK版本需要1.8以上

2:在IDEA编译过程中如果出现错误,类似的一些缺少依赖的可以尝试重新刷新编译,其他错误也可以尝试重新编译一下,至少我碰到的很多问题重新编译后就没有了

3:gradle版本需要4.2以上,本次选择的是4.9

4:这一条也是最重要的,注意IDEA版本问题,自己搞了很多次失败就是因为我一直开发使用的IDEA还是2018版本,在我切换了新版的IDEA2020版后编译一次就成功了,建议不管你的IDEA版本是2019还是其他的最好都切换成相对较新的版本为好,避免出现一些问题

5:网路上有很多的编译方式手段,其实大多都是可以的,不要在意使用哪种方式,重要的是分析和解决遇到的问题

(2)配置Gradle

Gradle下载地址:https://services.gradle.org/distributions/

这里选择的版本是:
gradle-4.9-bin

配置Gradle环境变量(参考):
GRADLE_HOME: D:\Gradle\gradle-4.9-bin\gradle-4.9
GRADLE_USER_HOME : D:\Gradle\gradle-repo

测试:命令行输入gradle -v

(3)下载Spring源码

Spring源码从GitHub上自行下载,这里建议通过将GitHub源码切到码云上,然后通过码云下载,这种方式下载速度很快,不需要浪费时间等待,我这里下载的版本是5.0

(4)IDEA导入Spring源码编译

编译Spring可以通过在命令行的方式编译,但是也可以通过IDEA等工具来进行编译,这里使用IDEA2020进行编译,在导入之前在IDEA中需要先配置Gradle路径
100%学会搭建Spring源码环境_第1张图片

配置完成后,通过IDEA导入Spring源码

100%学会搭建Spring源码环境_第2张图片

然后就等着编译过程了,需要下载gradle仓库jar包,这个过程时间较长,大概需要20分钟,如果出现问题可以刷新后再次编译,当然如果多次未果就需要根据问题分析解决了

接下来就是编译模块了,通过IDEA右侧的Gradle工具依次执行编译,具体编译参考下图:(下面四个都需要编译一下,这个过程不需要太长时间)
spring-core,spring-oxm,spring-context,spring-bean

100%学会搭建Spring源码环境_第3张图片

(5)创建自定义模块测试

上述操作执行完后已经搭建了基本的Spring源码环境,现在需要创建自己的测试模块需要引入到源码环境中的依赖

右击项目—创建新Module—选择gradle
模块新建成功后,配置build.gradle文件,添加Spring上下文依赖
compile project(’:spring-context’)
100%学会搭建Spring源码环境_第4张图片

创建一个Bean

@Component
public class UserDao {

   private String name;

	public String getName() {
		return name;
	}

	public void setName(String name) {
		this.name = name;
	}
}

测试类:

import com.dao.UserDao;
import org.springframework.context.annotation.AnnotationConfigApplicationContext;

public class Main {

	public static void main(String[] args) {
		AnnotationConfigApplicationContext context = new AnnotationConfigApplicationContext();
		//注册Bean
		context.register(UserDao.class);
		//重新构建IOC
		context.refresh();
		System.out.println("---------源码测试-----");
		UserDao bean = context.getBean(UserDao.class);
		bean.setName("Tom");
		System.out.println(bean.getName());

	}
}

100%学会搭建Spring源码环境_第5张图片

你可能感兴趣的:(Spring)