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 版本说明:

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);
        }
    
    }

    执行测试结果:

大功告成!

最后修改:2023 年 12 月 20 日
如果觉得我的文章对你有用,请点个赞吧~