为什么要学 Spring Boot?
Spring 作为 Java 开发界的框架,曾经和 Struts2、Hibernate 框架组成 SSH,成为 Java Web 开发的三驾马车。
大概在 2013 年左右,又和 Spring MVC、MyBatis 框架组成 SSM,成为新一代的 Web 开发框架全家桶,一直流行延续至今。
而为了简化 Spring 框架的上手难度,Spring Boot 框架于 2014 年诞生,可以帮助开发者更加轻松、快捷地使用 Spring 的组件,它是 Spring、Spring MVC 等框架更上一层的框架,它需要依赖于 Spring、Spring MVC 等原生框架,而不能独立存在。
学会 Spring Boot,可以简化使用 Spring 基础组件的难度,还是学习 Spring Cloud 微服务框架的基础,因为 Spring Cloud 的基础就是 Spring Boot。
Vaadin 近发布了一份有关企业中 Java 现状的研究报告:
https://pages.vaadin.com/java-survey-2023
其中,Spring Boot 已经超越 Spring 成为受欢迎的 Java 后端框架:
虽然 Spring Boot 是基于 Spring 的,但这个图表想表达的意思是,现在越来越多的开发者选择是基于开箱即用的 Spring Boot 来使用 Spring,而不是直接使用原始的 Spring。
既然 Spring Boot 代表了企业的真实需求,那么,它就会表现在 Java 工程师、架构师的求职面试技能清单上,Spring Boot 几乎是必备技能。
所以,要成为合格的 Java 程序员,要学习 Spring 全家桶,Spring Boot 则是必经之路。
2022年年底,Spring Boot发布了3.0.x版本,标志着Spring Boot进入3.x时代。如何能更好地了解Spring Boot 3的新特性,更系统地掌握Spring Boot呢?
想要系统地掌握Spring Boot,就要了解Spring Boot相关的核心知识,包括Spring Boot的配置管理、Starter、自动配置、启动过程与扩展应用、日志管理、数据访问、计划任务、缓存、消息队列、调试、单元测试、打包、部署、监控、报警等核心知识要点。
网络上关于Spring Boot杂而不精,很难系统化、全面地了解Spring Boot。如果想要对新的技术要点进行系统的梳理、解读及应用,一是根据官网的新内容进行学习(需要精通英文且学习曲线比较陡峭),二就是阅读新出版的图书或者其他相关资料。
首先我们了解一下作者是谁?
周红亮(英文名为John)人称R哥,具有多年编程开发和系统架构经验,在大型互联网公司担任过Java开发工程师、开发主管、系统架构师等职位。负责并参与过多个大型分布式系统的设计和研发、改造等,从中积累了大量的微服务系统架构经验。
作者同时也是微信公众号“Java技术栈(ID:javastack)”的主理人,笔名为“栈长”,关注并分享新的Java及IT行业技术,在公众号分享原创文章超过500篇,全网累积阅读达数千万,已帮助大量求职者进入BAT等大厂工作。
为什么要写这本书?
1、Spring Boot 至今已经发展了近十年,新的版本也已经发布到了 3.x,其底层实现逻辑、使用方式已经发生了翻天覆地的变化,同时在 Spring Boot 各个版本接二连三地停止维护的状况下,大部分版本已经不能满足技术更新的需要了。
2、虽然R哥熟练掌握了 Spring Boot 框架,但在其不断地发展下,某些知识点更新了也会浑然不知,直到在使用出错时才后知后觉,非常影响工作效率。
3、市面上很多书籍、博客都是基于 Spring Boot 低版本的应用,即使有新的 Spring Boot 技术,也都是四处零乱,并没有对新的技术要点进行系统地梳理、解读及应用,如果还继续学习低版本的应用,就会给很多初学者带来没有必要的知识更新的成本,也会走很多弯路。
鉴于以上种种原因,以及市面上关于 Spring Boot 3.x 的系统性学习资料比较匮乏,故R哥撰写本书以补空白,帮助国内 Java 开发者能够正确的学习、理解和使用新的 Spring Boot 技术。
R哥从 2017 年开始,陆续写了一些 Spring Boot 框架的博客教程,本以为出版此书会相当顺利,结果远没有想象中那么简单。写博客没有什么太重的思想负担,所以写得比较随意、零乱,也不成体系,而要出版成体系的书籍还相差甚远,而且博客部分内容已经过时,所以仅能作为一个基石。
为了写成此书,R哥又花费了近一年的巨量时间,以Spring Boot 3.0 里程碑版本作为出发点,在其基础上再进行深度打磨、加强和完善,并新增了 90% 以上的新内容,正式版本发布后再核对修正,后形成了本书的大纲和学习体系。
本书目录
本书一共为 12 章,这是一个由浅入深、循序渐进的学习过程。
第 1 章为 Spring Boot 基础入门,主要介绍 Spring Boot 的基础知识,包括背景、介绍、核心特性、核心模块、核心思想、版本选择,以及 Maven、Spring Boot CLI 等相关工具使用,还会带来简单的应用案例。
第 2 章为 Spring Boot 配置管理,主要介绍 Spring Boot 应用中的各种配置技巧,包括配置类、配置文件、外部化配置、配置绑定、随机配置、导入配置、多文档配置、Profiles 配置、加载机制、配置加密、配置迁移,有助于后续章节的的学习融会贯通。
第 3 章为 Spring Boot Starters 与自动配置,主要介绍 Spring Boot Starter 的全方面介绍和应用,包括命名规范、分类、自动配置原理及扩展机制,还会带来邮件 Starter 的介绍和应用,以及如何自定义一个 Spring Boot Starter。
第 4 章为 Spring Boot 启动过程与扩展应用,主要介绍 Spring Boot 的启动过程,包括引导方式、启动入口方法、启动流程源码分析,以及启动过程中的丰富的扩展应用,包括启动日志、启动图案、启动失败分析、启动事件和监听器、全局懒加载、启动运行器等等。
第 5 章为 Spring Boot 日志管理,主要介绍 Spring Boot 日志的使用,包括日志格式、日志文件、日志级别、日志分组、日志归档、自定义日志配置文件、切换日志框架、输出彩色日志等等。
第 6 章为 Spring Boot Web 核心应用,这是 Spring Boot 项目基本核心的部分,包括嵌入式容器、Web 组件的注册、静态资源处理、模板引擎、异常处理、参数效验、国际化、跨域、分布式会话、安全性、REST 服务调用等常用的 Web 技术的原理介绍、集成与应用。
第 7 章为 Spring Boot 数据访问,主要介绍 Spring Boot 与关系、NoSQL数据库的集成应用,包括数据源、连接池、事务管理、Spring Data JPA、MyBatis、MyBatis-Plus、Redis、MongoDB、Elasticsearch 的原理介绍、集成与应用。
第 8 章为 Spring Boot 计划任务,主要介绍划计划任务在 Spring Boot 中的应用,包括 Spring 中的计划任务和 Quartz 计划任务的原理介绍、集成与应用。
第 9 章为 Spring Boot 缓存与消息队列,主要介绍缓存和消息队列在 Spring Boot 的应用,缓存原理机制介绍及 Redis 缓存的实现与集成,消息队列原理介绍及 ActiveMQ、RabbitMQ、Kafka 的原理介绍、集成与应用。
第 10 章为 Spring Boot 调试与单元测试,主要介绍 Spring Boot 应用的调试方法、开发者工具的详细介绍与使用,以及如何在 Spring Boot 应用中做单元测试。
第 11 章为 Spring Boot 打包与部署,主要介绍 Spring Boot 应用的打包方式,以及如何将 Spring Boot 应用包以不同的方式运行、以不同的方式部署到 Linux 和 Docker 容器等,包括 Spring Boot 3.0 支持的构建 GraalVM 原生镜像应用方式。
第 12 章为 Spring Boot 监控与报警,主要介绍 Spring Boot Actuator 监控模块的详细介绍和使用,包括端点、指标,以及 Spring Boot 3.0 支持的可观测性技术的介绍与应用,还包括第三方监控平台 Spring Boot Admin、Prometheus + Grafana 的集成与应用。
本书适合哪些人群?
本书汇聚了R哥多年经验,都是满满的干货,在学习 Spring Boot 的同时,还能学习到其他 Java 核心技术,并且提供所有实战源代码,建议人手一本。
虽然本书是基于 Spring Boot 3.0 撰写的,但内容规划是一个从基础入门到进阶循序渐进的过程,即从 0 到 1。
所以,只要是 Java 程序员就适合,即使是没有任何 Spring Boot 使用经验的人,或者想系统学习 Spring Boot 技术的人,都推荐上手阅读。