在这本书出版之前,我就收到了雪丰的预览版稿子,在阅读后,我对这本书的评价如下:
随着 Spring 社区的不断发展与壮大,框架功能已经覆盖了 Java 日常开发的方方面面。虽然 Spring 的能力异常强大,但与此同时 Spring 项目体系变得非常复杂,如何循序渐进地学习就成了初学者最为苦恼的问题。如果你现在正打算入门 Spring 全家桶,我向你推荐这本书。本书通过一个贯穿全书的实战案例,一步步带领大家认识 Spring 的核心概念、常用模块以及当下最热门的 Spring Boot 和 Spring Cloud。此外,本书附录中的内容是目前市面上的图书所欠缺的——对于 Spring 全新技术的解读,可以帮助读者紧跟前沿技术步伐,完美衔接日后可能出现的实际工作场景,并为接下来的自我进阶提供极具参考价值的学习方向。
一、这书有哪些特点
雪丰这本书能够在以下几个方面给大家带来“与众书不同”的体验。
1. 内容全面且细致
本书希望能够将在日常工作中用到的 Spring 家族成员一次性全部收入囊中,包括但不限于 Spring Framework、Spring Boot、Spring Security、Spring Data 和Spring Cloud。Spring 家族成员数量“繁多”,很多朋友学习过程中遇到的一大问题就是需要找上一堆书,而不同图书之间的知识点不好衔接,学习的过程可谓“东一榔头西一榔头”,找不到学习的主线,最终的结果可能就是学了个“寂寞”。这本书的首要目标就是要帮助大家做到“学习一本书就能够解决工作中的大部分问题”。

2. 主题实用且本土化
书中的内容要贴近实际的工作场景。除了基础知识,书中更多的是那些能够拿来就用的内容,我们需要的是解决实际问题。例如,关于如何配置 DataSource,一般的书告诉大家能连上数据库就行了,但本书中专门安排了一节告诉大家如何加密连接用的密码、如何记录执行的 SQL 摘要日志等技巧。此外,与国外引进的作品不同,本书的内容相对更本土化一些,除了 Spring 本身,书中还加入了一些在国内使用相对较多的项目。例如,在国内,MyBatis 似乎比 Hibernate 更受大家的青睐,各家大厂都在重度使用。书中不仅介绍了 MyBatis,还介绍了让它如虎添翼的周边工具。在国内,阿里巴巴的 Druid 和 Dubbo 也有不少用户,很多公司都选择将 Dubbo 作为内部 RPC 的框架。此外,Spring Cloud Alibaba 也是一定不能错过的内容,无论你是否使用阿里云的服务,都应该对它有所了解,书中介绍了 Nacos 和 Sentinel 的具体用法。
3. 案例系统且完善
想要更好地理解书中的知识点,没有什么比生动的示例更有效的了。除了简单的代码示例,本书还特别设计了一个贯穿全书的“大型”二进制奶茶店项目案例。随着书中内容的演进,奶茶店功能逐渐丰富,越来越接近真实世界的线上奶茶店。跟着我们的演示,你就能轻松地搭建出一套完整的分布式系统。如果你的需求比较简单,对系统没有太高的要求,也许可以复制二进制奶茶店的代码,拿来就用。

每章末尾会总结二进制奶茶店大项目的进度
4. 知识有趣且深刻
如果只是介绍 Spring 家族成员的各种使用方法,那未免有些无趣,遇到一些知识点时,我们还要由点及面,多介绍些相关的信息,包括但不限于背景知识、实用技巧、常见问题、实现原理等。例如,在介绍事务时,我们会聊声明式事务背后的原理;在处理金额时,我们会聊为什么不用浮点数类型,而要使用 Money 类型;在使用 JPA 时,我们会讲解 JpaRepository 背后的实现原理;在介绍服务注册机制时,我们会了解 Zookeeper 不适合做服务注册中心的原因……这些知识点很有意思,一方面可以加深我们对相关技术点的理解,另一方面也相当于我们从正文的学习暂停片刻,进行简单的梳理和思考。所有的这些内容,我们都以“茶歇时间”的形式呈现了出来。按本书编辑的说法,这才是我全书写得最有意思的地方,大家一定不要错过书中四十余处的“茶歇时间”。

书中随时穿插的茶歇时间(背景知识 | 实用技巧 | 高频问题 | 实现原理)
二、这本书主要讲哪些内容
本书的内容涉及面非常广,囊括了 Spring 家族中的众多产品。全书一共分为五部分,其中正文四部分共计 16 章内容,最后一个部分是附录。
第一部分是第1章~第5章,主要介绍 Spring Framework 的核心内容,即 IoC 容器与 AOP,随后从 Spring Framework 过渡到 Spring Boot。网上介绍 IoC 与 AOP 的资料有很多,如果你是直接上手实战的话,暂时无须在相关知识点上花费太多时间。但是,考虑到两者是整个框架的基础,书中还是用了足量的篇幅来介绍它们。
第二部分是第6章~第8章,围绕数据操作展开讨论。从最基础的 JDBC 操作,一直到 Spring Data 提供的各种封装,以及对象关系映射框架的使用,如何使用缓存等话题,都会在这部分娓娓道来。除了常见的内容,这部分内容里还提及了不少原理和实用技巧,例如 Spring Framework 对 JDBC 异常的统一处理机制,如何基于它进行定制;如何使用 MyBatis 的各种周边工具简化日常开发工作。
第三部分是第9章~第11章,讨论与 Web 开发相关的内容,包含大量日常工作中的场景。这一部分既会讨论如何使用 Spring MVC 开发 Web 系统,如何使用 Spring Security 来保护系统安全;也会介绍一些更高级的玩法,例如基于 Spring WebFlux 开发响应式 Web 系统、使用 Spring Session 来实现分布式会话等。
第四部分是第12章~第16章,主要介绍分布式系统开发涉及的内容。我们会先从微服务和云原生的概念切入,讨论什么才是符合 RESTful 风格的微服务;再从“道”切换入“术”,聊聊如何利用 Spring Cloud 和其他基础设施来开发云原生服务,其中包括服务注册与发现、服务的配置管理、服务的容错保护等诸多内容。此外,除了Spring Cloud官方支持的ZooKeeper、Consul、Resilience4j,书中还加入了阿里巴巴提供的组件的内容。
最后是附录,这里主要为那些不便放在正文中的内容做个说明。附录分为两大主题,其一是新技术,包括接下来要发布的新版本——Spring Framework 6.0 和 Spring Boot 3.0,还有正在快速迭代的 Spring Native 项目;其二是实用技巧,主要是如何将 Spring Boot 项目打包成能开箱即用的 Docker 镜像。
再次强调一下,为了帮助大家更好地学习和掌握书中的内容,本书还设计了一个贯穿全书的示例——二进制奶茶店,大家可以随着这个例子从零开始,一步步构建出一套完整的基于主流基础设施的分布式系统。
大家可通过下面的思维导图查看本书的内容。

(点击可查看大图)
三、如何阅读这本书
既然是一本介绍 Spring 家族成员的书,本书的读者需要对 Java 有所了解,掌握 Java 日常开发的基本知识。
如果你是一位初学者,刚开始接触 Spring,建议你跟随本书的内容脉络,一章章地进行学习,并动手实现书中的例子。由于本书的篇幅较大,如果你时间有限,建议优先阅读前三部分,并且跳过其中的第8章和第11章的进阶内容。建议大家最好是能够通读全书后再根据实际掌握情况查缺补漏。
如果你是一位有一定经验的开发者,已经用 Spring 开发过一些实际的项目了,可以跳过书中各个章节中的基础内容(例如第2章中的2.1节和2.2节就是 IoC 容器的基础知识),直接阅读2.3节和2.4节,想必你会对那里的内容更感兴趣。你可以根据自己想要了解的内容,或者是遇到的问题,直接通过目录定位到特定的章节,快速通读后,对相关内容构建个大概的认识,说不定还能直接找到答案。
无论是否有经验,都推荐大家读读书中的“茶歇时间”。“茶歇时间”的内容包罗万象,跟相应章节的内容关联紧密,其中一部分是雪丰的个人经验、深度思考的体现(例如技巧、行业热门问题分析等),还有一部分是专门为大家学习而设计的关联知识(例如背景知识、实现原理等)。值得一提的是,“茶歇时间”也编进了目录,方便大家快速定位。
希望大家把本书作为一本关于 Spring 的参考手册,放在电脑边,经常翻翻,基础知识怎么巩固都不为过。
四、关于雪丰
雪丰是国内最早推动 Spring 发展的技术人之一,是满江红技术社区 Spring Framework 2.0 与 2.5 两个版本的官方文档翻译项目的负责人。不夸张地说,雪丰是真正奋战在 Spring 前线的老兵。2019 年在极客时间上线的《玩转Spring全家桶》视频课程广受好评,学习人数已经超过 85000 人。
雪丰目前在美团任职研究员,曾就职于平安壹钱包、百度与支付宝,在互联网金融、支付等领域积累了丰富的大型系统构建经验。
相信跟着雪丰的这本保姆级教程,你一定能学好 Spring。
