Spring 源码部署及环境搭建
一、准备 Spring 5 源码
1. 前置条件
计算机上安装的 JDK 版本需确保在1.8以上,因为Spring 5 是基于Jdk1.8 实现的
2. 下载源码
官网下载
或使用我提供的版本
[已编译 带注释]
二、安装 gradle
1. 下载安装
查看 Spring 源码中的属性文件:spring-framework5.2.8\gradle\wrapper\gradle-wrapper.properties,期间有当前
Spring项目所需的 Geadle 版本说明:
官网 下载对应 Gradle 版本 (
下载速度较慢
)官网下载)
或使用我提供的 spring-5.2.8 配套的 gradle 版本
2. 配置环境变量
操作 | 环境变量 | 值 |
---|---|---|
添加新环境变量 | GRADLE_HOME | E:\A_Sys_Utils\Gradle\gradle-version-all\gradle-5.6.4 (自行更改) |
在已有环境变量中添加 | Path | %GRADLE_HOME%\bin |
cmd 窗口输入:gradle -version,验证是否成功
三、导入源码到 Intell Idea
1. 导入已有项目
2. 选择Spring 5 源码解压缩后的目录, 点击OK下一步
3. 配置gradle 操作,配置后点击OK开始导入
4. IDEA 项目配置更改
5. Spring 源码项目配置文件更改
settings.gradle
修改
repositories
内容# 搜索 repositories 代码块内容变更为: pluginManagement { repositories { // 新增远程仓库地址为国内,阿里巴巴。 maven { url 'https://maven.aliyun.com/nexus/content/groups/public/' } mavenCentral() gradlePluginPortal() maven { url "https://repo.spring.io/release" } } }
build.gradle
修改
repositories
内容# 搜索 repositories 代码块内容变更为: repositories { maven { url 'https://maven.aliyun.com/nexus/content/groups/public/' } maven { url 'https://maven.aliyun.com/nexus/content/repositories/jcenter' } mavenCentral() maven { url "https://repo.spring.io/libs-spring-framework-build" } }
6. 刷新项目,或者 build
以上配置完成!
四、创建 Module 项目
1. 右键创建 Module 项目
不同 IDEA 版本或许创建的页面不一样, 注意子模块的父级和子模块名称
2. 导入依赖
项目创建完毕之后,默认的gradle文件是:build.gradle
文件,这里导入依赖:
配置文件:
plugins {
id 'java'
}
group = 'com.dpl'
version = '5.2.8.RELEASE'
repositories {
mavenCentral()
}
//下方注入依赖,需要学习什么源码,就添加什么依赖
dependencies {
// 这里我添加了 spring-context 模块
compile(project(":spring-context"))
// 添加 lombok 插件
compileOnly "org.projectlombok:lombok:1.18.6"
annotationProcessor "org.projectlombok:lombok:1.18.6"
// Junit单元测试依赖
testImplementation platform('org.junit:junit-bom:5.9.1')
testImplementation 'org.junit.jupiter:junit-jupiter'
}
test {
useJUnitPlatform()
}
3. 单元测试
新建
Person
测试类package com.dpl.ioc; import lombok.Data; /** * <p> * * @author dpl * @since 2023/12/19 17:01 */ @Data public class Person { private String name; private int age; }
新建
applicationContext.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="person" class="com.dpl.ioc.Person"> <property name="name" value="dpl"/> <property name="age" value="26"/> </bean> </beans>
新建
Test
单元测试类import org.junit.jupiter.api.Test; import org.springframework.context.ApplicationContext; import org.springframework.context.support.ClassPathXmlApplicationContext; /** * <p> * * @author dpl * @since 2023/12/19 17:11 */ public class TestDemo { @Test public void testA() { ApplicationContext context = new ClassPathXmlApplicationContext("applicationContext.xml"); Object person = context.getBean("person"); System.out.println(">>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>"); System.out.println(person); } }
执行测试结果:
大功告成!