转载

Spring源码解析之环境搭建

作为了Java开发者,想要更高的提高自己,阅读源码是迈不过去的坎,而Spring框架是java开发者使用的最多的框架之一,也是发展多年来沉淀出的优秀框架,里面有很多巧妙的设计模式的实践以及很多优秀的设计思想来值得我们学习,所以我打算写一个Spring源码解析系列文章(给自己挖坑),虽然市面上已经有了大量分析Spring框架的文章,但是本人还是想以自己的理解尽可能的输出详细的源码解析,本篇文章是源码解析第一篇,主要进行Spring源码的阅读环境的搭建和验证。

二、环境搭建准备

2.1 安装 Gradle

下载地址

Gradle是一个基于Groovy的构建工具,使用Groovy来编写脚本,支持依赖管理和多项目构建,类似于Maven。目前的版本是5.4,里面包含了Windows,linux以及macOS多平台的安装步骤。 安装并配置好环境变量后,在命令窗口输入 gradle -v 输出了版本号就表示安装成功啦。

2.2 下载源码并编译

GitHub源码地址

我们选择5.1.6.Release分支,由于使用git clone比较慢,我们直接下载zip包进行解压编译,解压后的目录结构如下:

Spring源码解析之环境搭建

我们看到这个目录下有两个md文件,根据名字我们可以知道这里应该是告诉你导入eclipse和idea的操作步骤,我们这里就以IDEA进行演示。

在解压后的spring目录下执行命令: ./gradlew :spring-oxm:compileTestJava (Windows环境下是执行 gradlew.bat )。执行后会进行一段时间编译,当出现如图所示的结果后就表示编译成功了。

Spring源码解析之环境搭建

2.3 导入IDEA

编译好源码后我们需要导入到Idea中进行调试,当然你也可以选择eclipse进行调试。

第一步:选择import project ,然后选择spring项目文件夹下面的build.gradle文件,选择后效果如下:

Spring源码解析之环境搭建

主要是配置好Gradle Home以及 JVM,其他的保持默认就可以了,点击ok就会进入项目,然后Gradle会进行相关的依赖包下载。

经过一段时间下载依赖包完成后,就需要排除 spring-aspects 模块的包,因为它引入了未知的类型导致IDEA无法编译, 选中该模块,右键--Load/Unload Modules ,把 spring-aspects 下的所有项目排除出去

Spring源码解析之环境搭建

到这里,整个Spring源码的编译和环境准备就完成了,接下来我们编写一个demo来调试一下,看看我们的代码是否没问题。

三、Demo调试

创建一个maven工程,由于我还是对maven比较熟悉,所以创建一个maven工程来调试源码。我创建的目录如下:

Spring源码解析之环境搭建

接下来去把添加依赖,我们准备先研究下spring-beans,所以先添加该依赖以及相关的依赖,我这里是添加的源码,当然你也可以直接添加maven的jar包。

Spring源码解析之环境搭建

接着,我们创建一个Spring的小demo,加载一个bean的配置文件,然后输出结果,代码如下:

单元测试方法

@Test
	public void  test(){
		ApplicationContext context = new ClassPathXmlApplicationContext("beans.xml");
		Person person= (Person) context.getBean("person");
		Assert.assertEquals("luozhou",person.getName());
	}
复制代码

Bean的POJO

public class Person {
	private String name;

	public String getName() {
		return name;
	}

	public void setName(String name) {
		this.name = name;
	}
}
复制代码

配置文件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 id="person" class="luozhou.beans.Person">
		<property name="name" value="luozhou"></property>
	</bean>
</beans>
复制代码

然后我们运行测试用例,输出是绿色进度条,说明我们的代码是成功运行,也就证明了我们的demo以及源码都没有问题。到此,我们的环境就算完全的搭建完毕并且验证成功了,下一篇文章我们就可以开始进行Spring的源码分析之旅啦。

四、总结

本文主要说了如何搭建一个Idea下分析Spring源码的环境,因为Spring源码是通过gradle管理的,所以首先需要下载安装gradle环境,然后去github上下载源码,接着根据解压出来的文件 import-into-idea.md 的安装步骤进行编译源码,源码编译ok后进行导入IDEA下,导入后注意需要排除spring-aspects模块。

本文是全系列的第一篇,篇幅也是比较短,下一篇会开始正式分析源码,下一篇《Spring源码解析之IOC容器》将会详细解析Spring中容器的实现,尽请期待。

原文  https://juejin.im/post/5cbacad26fb9a0688225ab94
正文到此结束
Loading...