代码改变世界

spring源码下载教程

2025-09-13 18:40  Spiderman25  阅读(79)  评论(0)    收藏  举报

这次以spring v5.3.9版本为例子,讲解如何搭建阅读spring的环境

1、源码下载

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

建议用clone进行下载,因为zip包的方式在idea导入项目时会存在报错的问题。

2、gradle配置

spring中内置了gradle

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

但是idea下载gradle时会很慢,所以如果让idea下载会等很久,所以现在有两种方法

第一种:我们手动下载下来,然后放到任意目录下,把distributionUrl修改为file:///D:/ProgramFiles/gradle-6.8.3-bin.zip,配好GRADLE_USER_HOME(本地仓库)、init.gradle(网络仓库)

 

第二种:使用本地的gradle

使用Internet Download Manager下载一样版本的gradle

配置方法参照https://blog.csdn.net/GoodburghCottage/article/details/128169907

配好GRADLE_HOME(安装目录)、GRADLE_USER_HOME(本地仓库)、init.gradle(网络仓库)

 

init.gradle内容:

allprojects {
    repositories {
        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/' }
        }
    }
}

关于init.gradle存放的位置

1.在命令行指定文件,例如:gradle --init-script yourdir/init.gradle -q taskName。你可以多次输入此命令来指定多个init文件
2.把init.gradle文件放到 USER_HOME/.gradle/ 目录下
3.把以.gradle结尾的文件放到 USER_HOME/.gradle/init.d/ 目录下
4.把以.gradle结尾的文件放到 GRADLE_HOME/init.d/ 目录下
如果存在上面的4种方式的2种以上,gradle会按上面的1-4序号依次执行这些文件,如果给定目录下存在多个init脚本,会
按拼音a-z顺序执行这些脚本,每个init脚本都存在一个对应的gradle实例,你在这个文件中调用的所有方法和属性,都会
委托给这个gradle实例,每个init脚本都实现了Script接口。
 

把项目导入idea,切换到v5.3.9的标签

图片

 

添加jdk11,因为这次的版本使用的是jdk11,在官网下载即可,然后解压缩,在idea中配置jdk11

图片

 设置Gradle的配置

如果使用项目自带的gradle这样配置

图片

 如果使用本地的gradle这样配置

图片

 

如果导入过程中提示无法从某个仓库中下载东西,就把这个仓库在init.gradle中去掉

最后完成导入

图片

 

新建自己的模块

图片

 

图片

 

图片

 文件内容

AppConfig
package org.springframework.csp;

import org.springframework.context.annotation.ComponentScan;
import org.springframework.context.annotation.Configuration;

@Configuration
@ComponentScan(basePackages = "org.springframework.csp")
public class AppConfig {
}

 HelloService

package org.springframework.csp;

import org.springframework.stereotype.Service;

@Service
public class HelloService {
    public String sayHello() {
        return "Hello, Spring!";
    }
}

 Main

package org.springframework.csp;


import org.springframework.context.annotation.AnnotationConfigApplicationContext;

public class Main {
    public static void main(String[] args) {
        // 创建 Spring 容器
        AnnotationConfigApplicationContext context = new AnnotationConfigApplicationContext(AppConfig.class);

        // 从容器中获取 HelloService Bean
        HelloService helloService = context.getBean(HelloService.class);

        // 使用 Bean
        System.out.println(helloService.sayHello());

        // 关闭容器
        context.close();
    }
}

 build.gradle

plugins {
    id 'java'
}

group 'org.springframework'
version '5.3.9'

repositories {
    mavenCentral()
}

dependencies {
    implementation project(':spring-context')
    implementation(project(":spring-core"))
    implementation(project(":spring-aop"))
    implementation(project(":spring-beans"))
    implementation(project(":spring-context"))
    implementation(project(":spring-jdbc"))
    implementation(project(":spring-orm"))
    implementation(project(":spring-tx"))
    implementation(project(":spring-web"))
    implementation(project(":spring-webflux"))
    implementation(project(":spring-webmvc"))
    implementation(project(":spring-websocket"))
}

test {
    useJUnitPlatform()
}

 点击main方法运行,最后输出

 

图片