倚楼听风雨
淡看江湖路

IntelliJ IDEA 导入 Spring Boot 源码教程

一、前提

最近老四面试过程中,发现很多人对于 Spring Boot 只能说出来个「自动配置」,至于 Spring Boot 到底对 Spring 做了什么,基本很少有人能够回答上来,所以其实一个工具或者框架用的相对较久之后,你应该最起码的了解一下背后的运行原理,不仅适用于面试去卷,也更能够帮助写出更优雅的代码,这次就从搭建 Spring Boot 源码阅读环境入手,逐步探索一下 Spring Boot 到底在 Spring 启动之前做了哪些核心的事情。

注意:截止发文前,Spring Boot 已经从 2.7 版本直接跳跃发布了 3.0 版本, Spring Boot 3.0 版本最低要求 Java 17,Spring 框架要求也变成了最低 6.0.2,考虑到大部分研发和企业目前使用的还是 Java 8,所以我们阅读 Spring 源码,依然从支持 Java8 的 2.7 版本着手。

简单的描述一下 2.7 版本的新特性:

  • 自动配置变更(spring.factories 改为 spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports)
  • 新增了一个自动配置注解 @AutoConfiguration,用来代替之前的 @Configuration,用于标识新自动配置注册文件中的顶级自动配置类,由 @AutoConfiguration 注解嵌套、导入进来的其他配置类可以继续使用 @Configuration 注解。
  • 支持 GraphQL

  • 支持 Podman

  • 支持 RabbitStreamTemplate

  • 支持 Hazelcast

  • 支持 Cache2k

  • Web Server SSL 增强

  • info 端点增强(/info 端点中的 Java 供应商添加了供应商版本信息)

  • 单元测试加强

二、开发环境

开发环境因人而异,没有绝对的限制,一般源码导入的过程遇到的问题也大同小异,逃不出那几个。说一下老四的开发环境:

  1. IntelliJ IDEA 2022.3 (Ultimate Edition)
  2. Gradle 7.6
  3. Maven 3.6.3
  4. Spring Boot GitHub

这里如果有不熟悉 Gradle 的可以随意搜索一下相关教程,至少在使用起来上跟 Maven 差不多,可以配置国内的镜像源,可以自定义仓库配置,下面也会提及到。

三、Spring Boot 源码导入 IDEA 工程中

Spring Boot 代码克隆

老四使用的是 Mac 哈,不过跟 Windows 没什么差别。源码引入的方式比较简单,直接 File -> New -> Project from Version Control…,然后输入 Spring Boot 的 clone 地址即可。clone 之后,IDEA 会自动识别为 Gradle 项目。这个过程中如果你不能访问 GitHub 的网络,可以使用科学上网或者 GitHub 的一些在线加速工具,参考文末相关文章阅读,如果你不能使用 GitHub 的https,可以尝试使用 ssh 的方式来进行克隆,再不行的话那你就直接下载 zip 包。IntelliJ IDEA 导入 Spring Boot 源码教程的图片-高老四博客 第1张

Gradle 配置

现在 Gradle 越来越得到认可,无论是 Spring Boot 还是开源的 Spring 项目,现在都已经使用 Gradle 来进行构建,所以要求你先下载好 Gradle,很简单, Gradle 官网直接下载即可。

然后配置一下 IDEA 中关于 Gradle 的配置:

IntelliJ IDEA 导入 Spring Boot 源码教程的图片-高老四博客 第2张

在构建的过程中如果觉得慢,Gradle 也可以使用阿里云的镜像源来下载依赖包,当前项目的话就在当前项目的「build.gradle」中添加

如果想要全局添加,那么需要在 USER_HOME/.gradle/ 下创建 init.gradle 文件,USER_HOME 代表的就是系统用户目录,然后配置如下:

Spring Boot 分支切换

导入后,IDEA 会默认为 master 分支,我们需要切换到 2.7.X 分支。

IntelliJ IDEA 导入 Spring Boot 源码教程的图片-高老四博客 第3张

接下来就是等待 IDEA Gradle 进行项目构建,不出现意外的话,构建完毕的后 Spring Boot 的包结构应该是这个样子的:

IntelliJ IDEA 导入 Spring Boot 源码教程的图片-高老四博客 第4张

这个过程中基本没有什么坑哈,需要注意的一点就是把 IDEA 的 JVM 运行内存加大一点就好,默认的话可能撑不起来。

创建 Spring Boot 源码 Hello World

我们新建一个 Gradle 模块,写一个简单的控制器,打印出来「Hello World!」,以此来证明我们导入的当前的源码是可以进行编译和工作的。

新建一个 Gradle Module:

IntelliJ IDEA 导入 Spring Boot 源码教程的图片-高老四博客 第5张

建完之后,会在 spring-boot-project、spring-boot-system-tests、spring-boot-tests 同级出现「spring-boot-glorze」,在「spring-boot-glorze」中我们先修改一下「build.gradle」文件,如下所示:

后面两个 task 如果不配置的话,在进行 Gradle 重新构建过程中会出现下面的这样的 error,所以老四一并配置上了。

Task ‘wrapper’ not found in project ‘:spring-boot-glorze’.

Task ‘prepareKotlinBuildScriptModel’ not found in project ‘:spring-boot-glorze’.

接下来写一个最简单的控制器,就像正常使用 Spring Boot 那样来写:

IntelliJ IDEA 导入 Spring Boot 源码教程的图片-高老四博客 第6张

然后点火启动主程序,在浏览器地址栏输入「localhost:8080/hello」,能够看到『Hello World!』打印出来,代表我们的 Spring Boot 源码导入已经成功了,这个时候我们就可以随时来进行源码阅读,也可以自己进行注释,还可以随时 pull 线上的最新的改动。

IntelliJ IDEA 导入 Spring Boot 源码教程的图片-高老四博客 第7张

相关文章阅读

  1. 随手分享一下 IntelliJ IDEA 2022.2.1 以及 jetbrains 所有产品最新破解方法 持续更新
  2. GitHub 加速教程
  3. IntelliJ IDEA 导入 Spring 源码教程
  4. IntelliJ IDEA 导入 JDK 1.8 源码教程

更博不易,如果觉得文章对你有帮助并且有能力的老铁烦请捐赠盒烟钱,点我去赞助。或者扫描文章下面的微信/支付宝二维码打赏任意金额(点击「给你买杜蕾斯」),也可以加入本站封闭式交流论坛「DownHub」开启新世界的大门,老四这里抱拳谢谢诸位了。捐赠时请备注姓名或者昵称,因为您的署名会出现在赞赏列表页面,您的捐赠钱财也会被用于小站的服务器运维上面,再次抱拳感谢。

赞(4) 给你买杜蕾斯
本站原创文章受自媒体平台原创保护,未经允许不得转载高老四博客 » IntelliJ IDEA 导入 Spring Boot 源码教程

开始你的表演 抢沙发

觉得文章有用就打赏一下老四,鼓励我更好的创作

非常感谢你的打赏,我们将继续给力更多优质内容,让我们一起创建更加美好的网络世界!

支付宝扫一扫打赏

微信扫一扫打赏

登录

找回密码

注册