spring源码下载编译并导入到 IDEA,编写一个学习调试源码的demo

环境准备

1、安装git
2、jdk,版本为1.8
3、Gradle,目前不需要安装,在编译的时候根据源码提示按照对应版本的Gradle即可
4、IDEA,我使用的版本为 IDEA2020.3.1

1、获取Spring源码

推荐使用clone的方式将源码拉取到本地,好处在于可以利用IDEA直接比较版本间的差异

在磁盘空间中新建一个文件夹,如SpringFramWork,进入SpringFramWork文件夹中,鼠标右键,选择git bash here ,打开git命令行,输入以下命令,拉取spring源码

git clone https://github.com/spring-projects/spring-framework.git

等待仓库克隆完毕,这个过程可能会耗费比较长的时间,如果实在不行的话,大家可以去GitHub官网或者码云直接将源码的压缩包down下来。

官网下载(下载太慢):
https://github.com/spring-projects/spring-framework/archive/v5.0.2.RELEASE.zip

码云下载:

https://gitee.com/mirrors/Spring-Framework/tree/v5.0.2.RELEASE/

如果你是跟我一样通过命令直接拉取的代码,记得切换到5.2.x版本,在git命令行中执行命令:

 git checkout origin/5.2.x
2、添加阿里云镜像

在编译过程中,Spring会去自动下载一些依赖的包,默认使用的是官方的镜像,下载比较慢,所以我们提前添加好国内镜像,将下面这行代码粘贴到build.gradle文件中的repositories节点下即可 ,

//添加阿里云镜像
maven { url "http://maven.aliyun.com/nexus/content/groups/public" }

在这里插入图片描述

3、预先编译spring-oxm模块

打开Windows的命令提示符窗口,切换到源码所在文件夹,比如:E:\software\SpringFramWork\spring-framework,执行以下命令

gradlew :spring-oxm:compileTestJava

这里需要等待比较长的时间,我是20分钟,出现BUILD SUCCESS字样时说明构建成功

4、根据编译后的源码下载并安装对应的版本的Gradle

在完成对spring-oxm模块的编译后,会在当前spring-framework目录生成一个.gradle文件夹,打开后可以查看对应的Gradle版本。双击打开.gradle文件夹就能看到对应所需要的gradle的版本号,在下面的网站上下载对应所需要的版本即可:https://gradle.org/releases/,选择binary-only

5、下载安装好后配置Gradle的环境变量

新增 GRADLE_HOME 环境变量,指向Gradle解压目录。配置Path环境变量:新增 %GRADLE_HOME%\bin
之后测试是否安装成,在命令行中输入以下命令:gradle -v,查看是否正确输出了对应版本。

6、为安装好的Gradle配置国内镜像

进入Gradle安装目录,在init.d目录下新建一个init.gradle文件,并添加以下内容:

allprojects{
    repositories {
        def REPOSITORY_URL = 'http://maven.aliyun.com/nexus/content/groups/public/'
        all { ArtifactRepository repo ->
            def url = repo.url.toString()
            if ((repo instanceof MavenArtifactRepository) && (url.startsWith('https://repo1.maven.org/maven2') || url.startsWith('https://jcenter.bintray.com'))) {
                project.logger.lifecycle 'Repository ${repo.url} replaced by $REPOSITORY_URL .'
                remove repo
            }
        }
        maven {
            url REPOSITORY_URL
        }
    }
}
7、将代码导入到IDEA中

打开IDEA并选择打开项目,选择当前的spring-framework目录,点击Finish后等待IDEA构建完项目,如果你之前已经按照我的方法配置了Gradle的国内镜像,这个过程不会太久,我们本机只用了10多分钟就构建完成了
如果你跟我一样是直接检出的代码,记得在IDEA中将git分支切换到5.2.x
在这里插入图片描述
如果在右下角没有出现git分支,鼠标右键点击右键角的一栏,勾选git branch
在这里插入图片描述
出现git分支后,鼠标左键点击,弹出选择列表,选择5.2.x
在这里插入图片描述

8、构建整个项目

选择Build > Build Project

9、添加测试模块

右键工程名 —> new —> module,选择Gradle及Java,输入模块名称,点击next —> Finish 完成测试模块的创建

最后,添加一些必要的依赖,修改创建好的模块中的build.gradle文件,添加如下三个依赖

compile(project(":spring-aop"))
compile(project(":spring-context"))
optional("org.aspectj:aspectjweaver")
10、为模块添加访问源码的入口

在新模块的java目录下新增一个package,com.gxb.service,在该package下新增一个service类

package com.gxb.service;

public interface WelcomeService {
	String sayHello(String name);
}

在com.gxb.service包下新增一个impl包,在该包下新增一个service实现类

package com.gxb.service.impl;
import com.gxb.service.WelcomeService;

public class WelcomeServiceImpl implements WelcomeService {
	@Override
	public String sayHello(String name) {
		System.out.println("welcome " + name);
		return "return success!";
	}
}

在com.gxb包下创建一个类,并编写一个入口函数

package com.gxb;

import com.gxb.service.WelcomeService;
import org.springframework.context.support.ClassPathXmlApplicationContext;

public class Entrance {


	public static void main(String[] args) {
		System.out.println("hello spring");
		String classPath = "spring/spring-config.xml";
		ClassPathXmlApplicationContext applicationContext = new ClassPathXmlApplicationContext(classPath);
		WelcomeService welcomeService = (WelcomeService) applicationContext.getBean("welcomeService");
		System.out.println(welcomeService.sayHello("gxb"));
	}
}

在resource下新增一个文件夹spring,在spring文件夹下新增一个spring-config.xml,内容如下:

<?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="welcomeService" class="com.gxb.service.impl.WelcomeServiceImpl">
    </bean>
</beans>

使用debug方式运行main函数,程序成功启动

参考官方文档:

https://github.com/spring-projects/spring-framework/wiki/Build-from-Source
https://github.com/spring-projects/spring-framework/blob/master/import-into-idea.md

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值