spring源码导入IDEA使用GRADLE编译开发demo跟源代码

本文档详细介绍了如何配置开发环境以阅读和调试Spring源码,包括使用JDK11、Gradle,从GitHub下载源码,配置阿里云镜像加速,IDEA中导入与编译项目,并创建测试demo。通过这个过程,读者将能够成功搭建Spring源码的本地开发环境并开始源码学习。
摘要由CSDN通过智能技术生成

1.环境基本要求:

开发工具:IEDA202033

JDK:JDK11

编译工具:GRADLE

2.下载spring源码

git地址:https://github.com/spring-projects/spring-framework

使用压缩包zip的方式进行源码的下载,下载后解压文件

3.JDK安装,JDK一开始使用的是1.8.0202,导入spring源码后编译出现错误: 程序包jdk.jfr不存在 import jdk.jfr.Category;最后把jdk1.8卸载,装了jdk11;装jdk11的之前,先卸载jdk1.8,删除JAVA_HOME环境变量,Path中jdk的配置;再安装jdk11,默认一直下一步,安装成功后,配置JAVA_HOME环境变量;在控制台查看JDK11是否安装成功,使用命令java -version查看控制台

4.spring源码使用GRADLE编译的,所以需要安装gradle,地址:https://services.gradle.org/distributions/,我使用的最新版本,需要看文档可以下载docs.zip查看

下载后,解压到本地目录中

配置gradle环境变量,与配置maven基本一致,我的电脑-》属性-》高级-》环境变量-》新建变量名为GRADLE_HOME,变量值为刚才解压的gradle所在目录,配置完之后,在path中添加gradle的配置%GRADLE_HOME%\bin。配置完成之后,使用命令gradle -version,查看安装是否成功。

5.源码导入idea前的修改,找到spring-framework-master项目下的配置文件settings.gradle、build.gradle,修改依赖文件为阿里云镜像下载

	    maven { url 'https://maven.aliyun.com/nexus/content/groups/public/' }
        maven { url 'https://maven.aliyun.com/nexus/content/repositories/jcenter' }

settings.gradle修改位置,

pluginManagement {
	repositories {
	    maven { url 'https://maven.aliyun.com/nexus/content/groups/public/' }

        maven { url 'https://maven.aliyun.com/nexus/content/repositories/jcenter' }
		gradlePluginPortal()
		maven { url 'https://repo.spring.io/plugins-release' }
	}
}

build.gradle修改位置

	repositories {
			mavenLocal()
			maven { url 'https://maven.aliyun.com/nexus/content/groups/public' }
			maven { url "https://repo.spring.io/plugins-release" }
			maven { url 'https://repo.spring.io/libs-snapshot' }
			maven { url "https://repo.spring.io/snapshot" }
			maven { url "https://repo.spring.io/milestone" }
            maven { url 'https://maven.aliyun.com/nexus/content/repositories/jcenter' }
			mavenCentral()
			maven {
				url "https://plugins.gradle.org/m2/"
			}
		}

6.ieda打开后编辑gradle配置信息,file->settings-》gradle;勾选jdk版本及gradle的安装位置

7.导入spring源码,file->new->project from existing sources,选中spring源码,然后选择Gradle方式导入

8.导入项目后,gradle会自动编译下载需要的jar包,此过程比较慢,需要耐心等待,若是没有触发gradle自动编译,可以从此处点击圆环,直到编译完成

9.编译完成后,我们开始往spring源码项目中添加测试的demo,new-》module->gradle->java,选择jdk11,下一步,填写下module的名字,自己命名即可,finish结束

10.此时spring源码项目中多了一个目录testspring,编译方式也是gradle,新建的项目需要引用spring-beans、spring-core等的文件,所以在新目录下的配置bulid.gradle中添加引用,重新点第8步中的圆环进行编译

    testCompile group: 'junit', name: 'junit', version: '4.12'
    compile(project(":spring-beans"))
    compile(project(":spring-context"))
    compile(project(":spring-core"))
    compile(project(":spring-expression"))

11.第一个demo建立,创建一个实体Person,一个配置xml,一个测试入库程序类,包结构截图

Person实体代码
public class Person {

	private String name;

	private int age;

	@Override
	public String toString() {
		return "Person{" +
				"name='" + name + '\'' +
				", age=" + age +
				'}';
	}

	public String getName() {
		return name;
	}

	public void setName(String name) {
		this.name = name;
	}

	public int getAge() {
		return age;
	}

	public void setAge(int age) {
		this.age = age;
	}
}

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 class="Person" id="person">
		<property name="name" value="johnny"/>
		<property name="age" value="10"/>
	</bean>
</beans>

测试主函数


import org.springframework.beans.BeansException;
import org.springframework.context.support.ClassPathXmlApplicationContext;
public class Demo1 {


	public static void main(String[] args) throws Exception{
		ClassPathXmlApplicationContext classPathXmlApplicationContext = new ClassPathXmlApplicationContext("demo.xml");
		Person person = classPathXmlApplicationContext.getBean(Person.class);
		System.out.println(person);
	}

}

12.到测试即可断点跟程序,在源码上进行注释的书写了,开启spring源码阅读之旅吧

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值