Spring源码编译指北

前置环境

  • git version 2.28.0.windows.1
  • java version 11.0.1
  • gradle 8.0.2
  • idea 2022.2.1
  • windows 11 家庭版

下载源码

两种方案,直接下载压缩包,或者使用git获取代码,下面是spring在github的代码地址

GitHub - spring-projects/spring-framework: Spring Framework

下载压缩包,先将左侧的版本选择为5.3.x,然后直接选择code -> download ZIP,下载后解压即可

使用git获取代码先保证机器有git环境,打开idea选择右侧的GET from VSC

1.png

URL地址栏输入https://github.com/spring-projects/spring-framework.git,点击Clone等待下载完成

2.png

下载完成打开直接关闭idea对项目的加载,将版本调为5.3.x

3.png

编译源码

打开根目录下的import-into-idea.md文件,找到文件中的gradlew :spring-oxm:compileTestJava命令

4.png

使用管理员权限打开命令行窗口,移动目录到源码的根目录,执行在上述文件中刚找到的命令

如果没有报错那么恭喜编译spring源码已经完成了50%了,很遗憾的是根据环境的不同和网络的不同这个操作会产生很多意料外的错误。后续会把我在编译过程中的错误和解决方案放出来。

这里如果遇到网络错误,可以尝试科学上网然后重新执行,也可以多执行几次也是有可能成功的。

5.png

打开idea打开右侧的grade窗口点击刷新按钮,即可开始加载所有包的依赖,这一过程中不出意外的话会出现很多意外,后面会把我遇到过的问题整理发出,如果这一步还没出现问题,那么编译基本已经完成

6.png

最后一步需要排除掉spring-aspects项目,构建项目时存在这个项目会报错,直接右键选择Load/Unload Modules...将spring-aspects包放置到右侧即可

7.png

8.png

编写测试类-小试牛刀

在spring-test工程下的test目录建立一个自己的包,新建UserMessage类

public class UserMessage {
	private String name;
	private Integer age;
	private List<String> todos;
	// 忽略 get/set toString ...
}

在resource目录下建立ApplicationContext.xml配置文件,新增一个bean

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
	   xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
	   xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd">
	
	<bean name="jelly" class="top.byfree.jbyan.bean.UserMessage">
		<property name="name" value="jelly"/>
		<property name="age" value="18"/>
		<property name="todos">
			<list>
				<value>吃饭</value>
				<value>睡觉</value>
				<value>打豆豆</value>
			</list>
		</property>
	</bean>
	
</beans>

编写测试类TestUserMessage,执行测试类查看结果

public class TestUserMessage {
	@Test
	public void TestDemo01() {
		ClassPathXmlApplicationContext applicationContext = new ClassPathXmlApplicationContext("ApplicationContext.xml");
		UserMessage jelly = applicationContext.getBean(UserMessage.class);
		System.out.println(jelly);
	}
}

成功返回UserMessage信息,测试成功

9.png

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值