【Spring源码】IDEA 导入 Spring 源码并调试

Spring 框架在 github 上面的地址:https://github.com/spring-projects/spring-framework/.

Spring 源码构建参见官方文档:https://github.com/spring-projects/spring-framework/wiki/Build-from-Source.

1. 前期工作准备

开发环境:

JDK-1.8
DEA-2020.2.4
GRADLE-5.6.4
SRING-5.2.x.RELEASE
GIT

1、下载 Spring 源码
现在,Spring 源码托管在 Github 上面,所以,我们可以通过 Git 将此源码下载下来。
首先,进入 Spring 官网,点击 Github 图标,即可进入到 Spring 源码页面

如图:
在这里插入图片描述

安装 Git,然后 选择分支,即 Spring 源码的版本,复制 Spring 源码地址,使用 Git 进行下载
在这里插入图片描述

2、下载、安装并配置 Gradle
找到对应的 Gradle 版本。下载 Spring 源码的 Zip 包,并解压 。
在这里插入图片描述
然后打开 spring-framework-5.2.x/gradle/wrapper/gradle-wrapper.properties 查看源码使用的 Gradle 的版本号:

distributionBase=GRADLE_USER_HOME
distributionPath=wrapper/dists
distributionUrl=https\://services.gradle.org/distributions/gradle-5.6.4-bin.zip
zipStoreBase=GRADLE_USER_HOME
zipStorePath=wrapper/dists

distributionUrl的属性值知:Spring5.2.x 的版本对应的 Gradle 版本为 5.6.4

下载 Gradle。进入 Gradle 官网:https://gradle.org/releases/.
在这里插入图片描述
下载完毕后,进行解压,并配置环境变量

  • GRADLE_HOME:安装目录
  • GRADLE_USER_HOME:自定义仓库
  • 环境变量 Path:%GRADLE_HOME%\bin

测试是否安装成功。在命令行窗口中输入:

gradle -v

在这里插入图片描述
配置 Gradle 仓库源。在 Gradle 安装目录下的 init.d 文件夹下,新建一个 init.gradle 文件,里面填写以下配置:

allprojects {
    repositories {
        maven { url 'file:///D:/professionbehindEnd/gradle/GradleRepository'}
        mavenLocal()
        maven { name "Alibaba" ; url "https://maven.aliyun.com/repository/public" }
        maven { name "Bstek" ; url "http://nexus.bsdn.org/content/groups/public/" }
        mavenCentral()
    }

    buildscript { 
        repositories { 
            maven { name "Alibaba" ; url 'https://maven.aliyun.com/repository/public' }
            maven { name "Bstek" ; url 'http://nexus.bsdn.org/content/groups/public/' }
            maven { name "M2" ; url 'https://plugins.gradle.org/m2/' }
        }
    }
}

repositories 中写的是获取 jar 包的顺序:先是本地的 Maven 仓库路径;接着的 mavenLocal() 是获取 Maven 本地仓库的路径,应该是和第一条一样,但是不冲突;第三条和第四条是从国内和国外的网络上仓库获取;最后的 mavenCentral() 是从Apache提供的中央仓库获取 jar 包。

IDEA 中配置 Gradle。全局配置Gradle仓库
在这里插入图片描述

2. 构建 Spring 源码

解压 Spring 源码包,进入当前目录,shift + 鼠标右键选择 “在此处打开命令窗口” ,键入 gradlew build 开始构建

E:\occupation\spring-framework>gradlew build

加速构建。可在源码包根目录 build.gradle 文件中(末尾)更新如下配置,可加快构建效率:

plugins {
	id 'io.spring.dependency-management' version '1.0.9.RELEASE' apply false
	id 'io.spring.ge.conventions' version '0.0.7'
	id 'io.spring.nohttp' version '0.0.5.RELEASE'
	id 'org.jetbrains.kotlin.jvm' version '1.3.72' apply false
	id 'org.jetbrains.dokka' version '0.10.1' apply false
	id 'org.asciidoctor.jvm.convert' version '2.4.0'
	id 'org.asciidoctor.jvm.pdf' version '2.4.0'
	id 'de.undercouch.download' version '4.1.1'
	id "io.freefair.aspectj" version '4.1.6' apply false
	id "com.github.ben-manes.versions" version '0.28.0'
	id 'com.gradle.build-scan' version '3.2'
}

repositories {
    maven { url 'https://maven.aliyun.com/nexus/content/repositories/google' }
    maven { url 'https://maven.aliyun.com/nexus/content/groups/public/' } 
    maven { url 'https://maven.aliyun.com/nexus/content/repositories/jcenter'}
    maven { url 'https://repo.springsource.org/plugins-release'}
}

allprojects {
	repositories {
		maven { url 'https://maven.aliyun.com/nexus/content/repositories/google' }
		maven { url 'https://maven.aliyun.com/nexus/content/groups/public/' }
		maven { url 'https://maven.aliyun.com/nexus/content/repositories/jcenter'}
		maven { url 'https://repo.springsource.org/plugins-release'}
	}
}

【注意】:所有的仓库配置url前的http都要加上 s :“https://xxx”,要不然 > Task :checkstyleNohttp 任务会报错
在这里插入图片描述
如果结果中有 BUILD SUCCESSFUL 字样就明预编译成功:
在这里插入图片描述
可能出现的错误:
在这里插入图片描述
Git 的问题,暂时还不知道如何解决,不影响构建。

3. IDEA 导入 Spring 源码

选择下载到本地的 Spring 源码
在这里插入图片描述
配置 Gradle。配置后点击OK开始导入,过程有点长,如果配置国内镜像会好很多
在这里插入图片描述
配置 jdk1.8, Spring 高版本中使用了 1.8 新特性,为了避免报错,需要配置。
在这里插入图片描述
在这里插入图片描述

4. 对 Spring-test 模块做 junit 测试

在这里插入图片描述
结果,发现报错了:

Error:Kotlin: warnings found and -Werror specified

后得知,在 build.gradle 文件中有关于 kotlin 版本约束:
在这里插入图片描述
在 IDEA 配置中查看:
在这里插入图片描述
版本要与之对应。第一次导入时,用的 IDEA 版本是 2018.2,由于出现上面的问题,我就更换 IDEA 版本为 2020.2.4。然后,就没有上述报错了。
在这里插入图片描述

5. Spring 入门案例调试

在 spring-test 模块中,某个测试类中编写一个 Spring 入门案例代码。我这里是在 org.springframework.test.jdbc.JdbcTestUtilsTests 测试类中
在这里插入图片描述
在原有的测试类中,添加一个测试方法,代码如下:

@Test
void testDo() {
	BeanFactory beanFactory = new ClassPathXmlApplicationContext("bean.xml");
	MyTest bean = beanFactory.getBean(MyTest.class);
	System.out.println(bean);
}

要想运行成功,先前条件有两个:

  1. 在 main 文件夹下,添加一个 MyTest 类(这个和 bean.xml 中配置的类保持一致:com.zzc.MyTest)
  2. 在 test/resource 文件夹下,添加一个 bean.xml

bean.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 https://www.springframework.org/schema/beans/spring-beans.xsd">

	<bean id="myTestBean" class="com.zzc.MyTest"/>

</beans>

然后,启动测试类,编译成功后,如下图:
在这里插入图片描述
在后期过程中,Spring 源码就开整咯~~

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值