spring-framework-5.1源码编译

spring-framework-5.1源码编译

1 前言

最近因为需要从零开始接触了spring的源码,最开始的时候是使用IDEA反编译的源码,但是因为是反编译的跟原本的源码确实存在区别,并且还不能写注释。工欲善其事,必先利其器。毅然决然,决定下载spring的源码下来阅读,测试。

2 曲折的搭建之旅

因为spring5的源码是使用gradle搭建的,但是作为一个只会用maven的人来说,最开始确实是很懵逼的。再加上网上相关的资料确实不多,所以确实走了一点弯路。

2.1 工具版本

JDK1.8.0_141IDEA2018.3.2Gradle为IDEA默认下载(4.10)

2.2 下载源码

首先进入github找到spring官方发布的spring-framework的项目,选择相应的版本,将相关源码Download Zip下来。然后解压,使用IDEA打开项目。项目结构如下(我的是编译后的,没有编译的没有build目录):

2.3 预编译

由于我电脑本地没有gradle,并且我也不想下载gradle,所以我把这件事全权交给了IDEA,它自动帮我下载了gradle,所以等待它下载完成,并且进行包的导入花了很长的时间。耐心等待哦。(我看网上在这一步导入的时候会出现一些错误,但是我的却没有,可能是IDEA自动下载的gradle的缘故吧)

2.3.1 踩过的坑

最开始的时候也注意到了网上提醒的预编译,但是出现了一点意外,我把spring-core忘记了,编译spring-oxm后,随后编译了spring-context,然后是spring-bean。然后很不幸的,发生了无法找到DefaultListableBeanFactory类的情况,然后我就弄了很久很久很久很久…

最后实在是不知道怎么回事,决定推翻重来,一步步的,最后发现了预编译时,spring-core忘记编译了,真的是哭了o(╥﹏╥)o

2.3.2 具体编译操作

找到IDEA右边的grdle选项,按照spring-core、spring-oxm、spring-context、spring-bean的顺序依次执行下面的操作。

3 编写测试类

具体成不成,还是要测试一下塞,在项目上右键,new一个新的module,注意是一个gradle项目

最后完成后,在build.gradle里加入依赖

compile(project(":spring-context"))

编写测试类

AppConfig

public class AppConfig {

	public AppConfig() {
		System.out.println("init");
	}
}

Test

public class Test {

	public static void main(String[] args) {
		AnnotationConfigApplicationContext annotationConfigApplicationContext = new AnnotationConfigApplicationContext(AppConfig.class);
		System.out.println(annotationConfigApplicationContext.getBean(AppConfig.class));
	}
}

最后的结果

3.1 注意

可能上面的步骤完成后,运行测试类的时候会出现一个关于spring-instrument的错误(无法找到)。这时你需要按照上面的步骤compileTestJava一下。

然后在相应目录下的test目录下的java上右键,Run Tests in java,然后再重新运行测试类就行了。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值