到了这个年纪,就应该阅读Spring源码了,源码阅读指南-编译加运行

到了那个年纪,就应该阅读Spring源码了

Spring的源码地址

https://github.com/spring-projects/spring-framework

😄第一步,clone

我们先把他clone下来

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

没梯子的话多clone几遍就好了

😆第二步,使用idea打开项目

在这里插入图片描述

我们这里使用5.x的版本

在这里插入图片描述

设置里面gradle设置按照如下图设置即可

在这里插入图片描述

😊gradle介绍(插叙手法)

由于Spring源码都是使用Gradle来管理项目

按理来说我们gradle和maven类似,需要在本级载好并且安装好

但是不建议这么做,因为很多项目的源代码都自带了wrapper包

在这里插入图片描述

这里面有我们的gradle的包,这样有利于我们统一得管理版本冲突问题

Gradle Wrapper 实际上就是对 Gradle 的一层包装,用于解决实际开发中可能会遇到的不同的项目需要不同版本的 Gradle 问题。
例如:把自己的代码共享给其他人使用,
可能出现如下情况:
1.对方电脑没有安装 gradle
2.对方电脑安装过 gradle,但是版本太旧了
这时候,我们就可以考虑使用 Gradle Wrapper 了。这也是官方建议使用 Gradle Wrapper 的原因。

😃第三步,修改gradle的远程仓库地址

spring的gradle的远程仓库是spring自己的远程仓库,但是我们是拉不下来jar包的,原因是最新的spring仓库添加了认证

我们拉包的时候会出现

FAILURE: Build failed with an exception.

* What went wrong:
A problem occurred configuring root project 'spring'.
> Could not resolve all files for configuration ':classpath'.
   > Could not resolve org.apache.xerces:xercesImpl:2.9.1.
     Required by:
         project : > io.spring.gradle:docbook-reference-plugin:0.3.1
      > Could not resolve org.apache.xerces:xercesImpl:2.9.1.
         > Could not get resource 'https://repo.spring.io/plugins-release/org/apache/xerces/xercesImpl/2.9.1/xercesImpl-2.9.1.pom'.
            > Could not GET 'https://repo.spring.io/plugins-release/org/apache/xerces/xercesImpl/2.9.1/xercesImpl-2.9.1.pom'. Received status code 401 from server: Unauthorized
   > Could not resolve org.apache.xerces:resolver:2.9.1.
     Required by:
         project : > io.spring.gradle:docbook-reference-plugin:0.3.1
      > Could not resolve org.apache.xerces:resolver:2.9.1.
         > Could not get resource 'https://repo.spring.io/plugins-release/org/apache/xerces/resolver/2.9.1/resolver-2.9.1.pom'.
            > Could not GET 'https://repo.spring.io/plugins-release/org/apache/xerces/resolver/2.9.1/resolver-2.9.1.pom'. Received status code 401 from server: Unauthorized

* Try:
Run with --stacktrace option to get the stack trace. Run with --info or --debug option to get more log output. Run with --scan to get full insights.


Received status code 401 from server: Unauthorized 无权限

在这里插入图片描述

所以我们需要改成阿里云的仓库地址

😏这里遇到了很多的坑(插叙手法)

在网上有很多的解决方法,解决方法无非就是

在这里插入图片描述

添加

https://maven.aliyun.com/repository/public

但是,其实我们上面的错误,并不是添加这个仓库就解决了

我们去看官网地址
https://developer.aliyun.com/mvn/guide

在这里插入图片描述

添加的仓库就是箭头所指的仓库,但是我们搜索一下这个jar包

在这里插入图片描述

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

public仓库其实是没有这个jar包的,所以找个寂寞。。。

我们要去spring-plugin仓库中去拉

在这里插入图片描述

打开build.gradle文件

在这里插入图片描述

找到configure(allprojects)

在这里插入图片描述

方法里面的repositories

在这里插入图片描述

添加阿里云的地址

		maven {
			url 'https://maven.aliyun.com/repository/spring-plugin'
		}
		maven {
			url 'https://maven.aliyun.com/repository/public/'
		}

😍第四步,安装依赖

😘脚本介绍(插叙手法)

在这里插入图片描述

gradlew与gradlew.bat执行的指定wrapper版本中的gradle指令,不是本地安装的gradle指令
gradlew:linux下的脚本
gradlew.bat: Windows下的脚本

 ./gradlew.bat dependencies

在这里插入图片描述

第一次可能较慢,出现build successful就说明安装完成

在这里插入图片描述

这个时候我们重新加载gradle项目即可

在这里插入图片描述

😚第五步,编译spring项目

我们clean一下

在这里插入图片描述

然后

 ./gradlew.bat :spring-oxm:compileTestJava

在这里插入图片描述

编译成功后在各个模块有编译好的build文件夹

在这里插入图片描述

lib文件夹里面就是我们打好的jar包

在这里插入图片描述

这样就说明我们的源码环境已经完全配置好了

😳附赠内容(买一送一)

😌在spring源码项目中新建项目验证我们的spring源码

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

把src文件夹复制到spring-demo项目中(新建的项目如果为空的话,复制项目文件夹结构)

在这里插入图片描述

删掉多余的,自己新建文件包

在这里插入图片描述

添加 compile(project(":spring-context"))
意思是添加依赖spring-context

在这里插入图片描述

package com.masiyi;

import org.springframework.stereotype.Service;

/**
 * @Description TODO
 * @Author masiyi
 * @Date 2023/1/5
 **/
@Service
public class DemoService {
	public void hello() {
		System.out.println("hello spring");
	}
}


package com.masiyi;

import org.springframework.context.ApplicationContext;
import org.springframework.context.annotation.AnnotationConfigApplicationContext;
import org.springframework.context.annotation.Configuration;

/**
 * @Description TODO
 * @Author masiyi
 * @Date 2023/1/5
 **/
public class DemoStart {
	public static void main(String[] args) {
		ApplicationContext ac = new AnnotationConfigApplicationContext("com.masiyi");
		DemoService bean = ac.getBean(DemoService.class);
		bean.hello();
	}
}

运行即可

在这里插入图片描述

到了这个年纪阅读Spring源码确实是一项很有价值的学习和成长任务。Spring作为一个非常知名且广泛使用的开源框架,具有非常丰富的功能和复杂的设计。通过阅读Spring源码,我们可以深入理解Spring的核心原理和设计思想,提升自己的编码能力和问题解决能力。 下面是源码阅读的一般指南: 1. 编译源码:为了阅读Spring源码,首先需要将源码下载到本地,并进行编译Spring源码使用Maven进行构建,所以确保你的电脑安装了Maven,并在命令行工具中使用Maven命令进行编译。 2. 理解目录结构:Spring源码包含多个模块,每个模块负责不同的功能。在阅读之前,需要对源码的目录结构有一个基本的了解,了解每个模块的作用和关系。 3. 确定阅读顺序:Spring源码非常庞大,单纯从头到尾逐行阅读是非常耗时和无效的。建议先从Spring的核心模块开始阅读,如Spring Core和Spring Beans。这些模块包含了Spring的基础功能和核心设计思想。当你对核心模块有了一定的了解后,再逐渐深入其他模块。 4. 重点关注关键类和方法:在阅读源码时,不需要详细理解每一行代码的细节。可以先关注一些关键的类和方法,了解它们的作用和核心逻辑。通过阅读注释和使用IDE的跳转功能,可以更快速地定位到关键代码。 5. 结合实践运行调试:阅读源码最好的方式是结合实践进行运行和调试。可以通过使用Spring框架进行开发,将源码与实际应用场景相结合,更好地理解代码的运行过程和功能实现。 6. 查阅文档和学习资源:除了阅读源码,还可以查阅Spring的官方文档和相关学习资源,如官方文档、源码注释、博客、视频教程等,以更好地理解Spring的设计和实现原理。 通过阅读Spring源码,我们可以更深入地了解Spring框架背后的设计思想和原理,提升自己的编码水平和架构设计能力。尽管阅读源码可能会比较耗时和困难,但是对于一个专业的开发人员来说,这是一项非常有价值和必要的成长任务。
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

掉头发的王富贵

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值