10年开发大牛教你如何学习获取调试SpringBoot源代码

愿天堂没有BUG

共 3176字,需浏览 7分钟

 ·

2022-05-10 13:07



阅读代码前的准备

本章内容分为两部分,第一部分将带大家了解阅读 Spring Boot 源代码需要做的准备工作,包括如何获取源代码、源代码的项目结构、源代码阅读工具等内容。第二部分重点介绍 SpringBoot 的设计理念、设计目标以及整体框架。

本章默认读者有一定的 Java 编程能力, 并对 Spring Boot 有一定了解和基本的使用经验。

本文以写作时 Spring Boot 最新稳定版本 2.2.1 为基础进行讲解。该版本需在 Java 程序开发包 JDK 8.0 (及以上版本)和 Maven 3.3+环境下运行,读者需提前安装。

获取和调试 Spring Boot 源代码

获取 Spring Boot 的源代码

获取 Spring Boot 源代码有两种方式:直接获取整个项目源代码,创建 Maven 项目后间接加载源代码。我推荐使用第二种方式。

先介绍第一种方式。直接获取源代码方式比较简单,访问 GitHub 上的 Spring Boot 项目,通过 git clone 或直接下载 ZIP 压缩包方式,便可获取整个项目源代码。如果采用 git clone形式,注意下载完成后将代码切换至 tags 中的 2.2.1.RELEASE 版本。源代码地址:


htps://github.com/spring-projects/spring-boot。

压缩包下载完成后,可直接将项目导入 IDE,由 IDE 自动进行编译,也可在根目录下执行Maven 命令进行编译,代码如下。

mvn clean package -Dmaven. test. skip=true -Pfast

在执行上面命令时,-P 参数指定了快速编译,如果需要全量编译,则-P 参数值为 full。无论采用 git clone 还是 ZIP 压缩包形式下载,都会将整个项目的所有内容下载,使用 IDE编译或 maven 命令编译时会加载所有依赖 jar 包。如果选择此种方式获取源代码,耗时较长,请耐心等待。

第二种方式是创建 Spring Boot 的 Maven 项目后间接获取源代码,这样可以精准下载所需要项目的依赖及源代码。本书采用此种方式来获取源代码,以便更好地与实例相结合。该方式具体步骤如下。

步骤 1 创建一 个简单的 Spring Boot 项目。

步骤 2 通过 IDE 导入或打开项目。

步骤 3 pom.xml 文件中引 |入所需功能的 jar 包依赖。

步骤 4 通过 IDE 获取源代码和文档。(IDE 提供 下载源代码或下载文档功

能,并自动关联。)

调试 Spring Boot 的源代码

我们通常使用“实例+debug'方法对 Spring Boot 源代码进行调试与追踪。

Spring Boot 默认采用 main 方法启动,入口方法为 SpringApplication 类的 run 方法。创建项目后会默认生成类似以下入口类代码:

@SpringBootApplication
public class DemoApplication
public static void main(String[] args)
{
SpringApplication. run(DemoApplication.class, args);
}
}

比如,需要学习 SpringApplication 类初始化功能时, 可进入该类内部,通过 IDE 下载相关源代码,然后在具体位置打上断点,通过 debug 模式启动程序。当程序运行到断点处时,便可查看上下文相关信息及处理流程。

读者在实践的过程中,涉及每个具体知识点的源代码查看时,可以先编写具体实例,再 debug 运行实例并通过断点来跟踪具体执行流程。

SpringBoot源代码的目录结构

Spring Boot 项目的目录结构分为两部分,一部分 是整个开源项目的目录结构,另-部分是细化到 jar 包级别的目录结构。下面我们一起从整体到局部了解 Spring Boo 项目的目录结构。

Spring Boot 的整体项目结构

图 1-1 所示是 Spring Boot 在 GitHub 上 2.2.1.RELEASE 版本源代码顶层目录结构。


不同版本之间的 Spring Boot 源代码的顶层目录结构会有所变化,但并不影响其核心功能。2.2.x.RELEASE 版本由以下子模块构成。

:spring-boot-project: Spring Boot 核心项目代码,包含核心、工具、安全、文档、starters等项目。

spring-boot-tests: Spring Boot 部暑及集成的测试。

关于顶层目录结构,我们有个简单了解即可,从 1.5.x 到 2. 1.x 再到 2.2.x 版本,该层级的目录结构在不停地发生变化。

spring-boot-project 项目结构

spring-boot-project 目录是在 Spring Boot 2.0 版本发布后新增的目录层级,并将原来在Spring Boot 1.5.x 版本中的一级模块作为 spring-boot-project 的子模块。该模块包含了Spring Boot 所有的核心功能。

-spring-boot: Spring Boot 核心代码,也是入口类 SpringApplication 类所在项目,是本文重点介绍的内容。

-spring boot -actuator:提供应用程序的监控、统计、管理及自定义等相关功能。

-spring -boot actuator -autoconfigure:针对 actuator 提供的自动配置功能


-spring-boot-autoconfigure: Spring Boot 自动配置核心功能,默认集成了多种常见框架的自

动配置类等。

.spring-boot-cli:命令工具,提供快速搭建项目原型、启动服务、执行 Groovy 脚本等功能。

-spring-boot- dependencies:依赖和插件的版本信息。

-spring boot deutoos:开发者工具,提供热部署、实时加载、禁用缓存等提升开发效率的功能。

.spring-boot-docs:参考文档相关内容。

spring-boot-parent: spring-boot-dependencies 的子模块, 是其他项目的父模块。

-spring-boot properties-migrator: Spring Boot 2.0 版本新增的模块,支持升级版本配置属性的迁移。

-spring boot starters: Spring Boot 以预定义的方式集成了其他应用的 starter 集合。

:spring-boot-test:测试功能相关代码。

-spring-boot-test- autoconfigure:测试功能自动配置相关代码。

spring-boot-tools: Spring Boot 工具支持模块,包含 Ant、Maven、Gradle 等构建工具。

本文以 spring-boot 和 spring-boot-autoconfigure 模块为核心,同时会涉及 actuator、test.loader 等相关项目的源代码。

本文给大家讲解的内容是:获取和调试SpringBoot源代码、SpringBoot源代码的目录结构

  1. 下篇文章给大家讲解的是源代码阅读工具、SpringBoot的设计理念和目标、整体架构;

  2. 觉得文章不错的朋友可以转发此文关注小编;

  3. 感谢大家的支持!



本文就是愿天堂没有BUG给大家分享的内容,大家有收获的话可以分享下,想学习更多的话可以到微信公众号里找我,我等你哦。

浏览 26
点赞
评论
收藏
分享

手机扫一扫分享

分享
举报
评论
图片
表情
推荐
点赞
评论
收藏
分享

手机扫一扫分享

分享
举报