怎样学习 Spring?最好有个合适的老师能够提纲挈领地把 Spring 的精髓教给你,而不仅仅是那些细枝末节。
丁雪丰恰恰就是这样一位老师:一方面,他从 Spring 发展初期就一路追随,见证了 Spring 完整的“成长”过程,了解 Spring 每个特性的来龙去脉;另一方面,他在极客时间的 Spring 课程让近 10 万人从中受益,可以说,他比任何人都更懂普通程序员需要知道哪些东西,更懂怎样把 Spring 讲得易于理解。
这本书是丁老师对 Spring 思考的再次升华,有了它,我们不仅能够更好地面对 Spring 世界已有的知识,也更有底气面对 Spring 的未来。
——郑晔,极客时间《10x 程序员工作法》专栏作者
前火币网首席架构师、前 ThoughtWorks 首席咨询师
下面我们就来具体看看这本书为何可以解决你的 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。