首页>参考读物>计算机科学与技术>软件与程序设计

Spring Boot进阶:原理、实战与面试题分析
作者 : 郑天民 著
出版日期 : 2022-06-16
ISBN : 978-7-111-70674-8
定价 : 99.00元
扩展资源下载
扩展信息
语种 : 简体中文
页数 : 351
开本 : 16
原书名 :
原出版社:
属性分类: 店面
包含CD : 无CD
绝版 : 未绝版
图书简介

内容简介
这是一本能带领读者全方位掌握Spring Boot技术体系的功能、原理和Z佳实践的著作,能帮助读者在Spring Boot领域快速实现从入门到进阶。
全书涵盖Spring Boot的6大核心主题:核心容器、Web服务、缓存、数据访问、并发执行、监控与扩展,内容具有以下4大特性:
?针对性:系统梳理了6个主题所包含技术的功能特性、工作原理、实践方案,读者能快速掌握其核心技术、底层设计理念和生态扩展;
?创新性:与同类书不同,本书搜集并分析了每个主题下的高频面试题,旨在帮助读者在面试和晋升时事半功倍;
?实战性:注重实用性,基于作者近15年的经验,通过丰富的场景案例提供了大量应用方案和Z佳实践;
?前瞻性:不仅系统讲解了常用的核心技术,而且还讲解了时下流行的云原生、RSocket等前沿技术及其应用方案。

图书特色

由拥有15年架构和研发经验的资深专家撰写,全方位介绍Spring Boot技术体系的原理和最佳实践
全面覆盖Spring Boot 6大核心主题,对每个知识点提供高频面试题分析,让读者面试和晋升事半功倍

图书前言

为什么要写这本书
在当下的互联网应用中,业务体系日益复杂,业务功能也在不断地变化。以典型的电商类应用为例,其背后的业务功能复杂度以及快速迭代要求的开发速度,与5年前的同类业务系统相比,面临着诸多新的挑战。这些挑战中核心的一点就是快速高效地实现系统功能,同时保证代码持续可维护,这是一个非常现实且亟待解决的问题。
面对这样的挑战,需要强调一个观点,就是保持开发过程的简单性,而这种简单性很大程度上来自开发框架。在Java EE领域中,Spring Boot作为Spring家族中的一员,在传统Spring框架的基础上做了创新和优化,将开发人员从以往烦琐的配置工作中解放了出来,并提供了大量的即插即用的集成化组件,从而减少了开发过程中各种组件之间复杂的整合,提高了开发效率,降低了维护成本。
Spring Boot让配置、代码编写、部署和监控都更简单了,因此日益受到开发者的青睐。Spring Boot从2015年开始在国内走红,越来越多的企业选择将Spring Boot作为系统开发的首选框架。如今,Spring Boot已经成为Java工程师必须熟练掌握的基本技能。
但Spring Boot技术体系并不简单,包含大量的技术组件。那么,如何基于Spring Boot从零开始构建一个完整的应用程序?如何高效地掌握Spring Boot中这些技术组件的使用方法和技巧?如何在学习过程中避免掉进“坑”里?这些是学习Spring Boot 的广大开发人员想要知道的。
另外,我们知道,Spring Boot是一个集成性的开源框架,内部整合了很多第三方组件和框架。这些组件和框架应用如此之广泛,以至于大家反而往往对如何更好地使用Spring Boot自身的功能特性并不是很重视。事实上,Spring Boot自身的功能特性同样非常丰富,而且在使用上也存在一些最佳实践。
本书对Spring Boot的各项功能特性及其最佳实践、实现原理展开讨论,涵盖了核心容器、Web服务、内置缓存、数据访问、并发编程、监控和扩展等一系列核心主题,这些核心主题也广泛应用于Spring家族中的其他开发框架。
读者对象
本书面向的读者如下。
Java后端开发人员。这部分读者希望通过引入或者更好地使用 Spring Boot框架来提高自身的开发能力。本书作为体系化的Spring Boot框架最佳实践指南,能够为这类读者提供全面且完整的技术体系和实践技巧。
对Spring Boot框架有兴趣的开发人员。这部分读者希望通过一套优秀的开源框架来构建常用的开发技术体系。对于这部分读者而言,本书是一个很好的选择,Spring Boot中的各个功能组件入门比较简单,和JDK的集成性也很好,内部的设计理念也大多具备通用性。
广大高校学生。这部分读者希望系统学习一款主流的开发工具和框架,从而为后续的学习和工作打好基础。
本书特色
本书从Spring Boot进阶的角度切入,具备原创性和体系化,主要体现在五个方面。
对Spring Boot框架使用过程中的最佳实践进行了模块化梳理,分为核心容器、Web服务、内置缓存、数据访问、并发编程以及监控和扩展等六大模块,每个模块又基于Spring Boot中对应的核心技术组件展开讨论。
对于Spring Boot框架所提供的技术组件,从组件所依赖的基础要素出发进行分析,并给出组件的详细使用方法。同时,对于组件的功能特性,基于完整的案例代码给出开发和实践技巧。
对于涉及依赖注入、面向切面、缓存、数据访问、异步编程等通用化的功能组件,理论联系实际,从实现机制和内部原理角度出发详细分析组件背后的架构思想以及设计方法,并给出源码级的系统讲解。
对每个Spring Boot主题都给出高频的面试题分析,结合主题的主体内容提供面试过程中的问题点,以及应对这些问题点的回答技巧。
本书描述的部分Spring Boot核心功能,例如刚成为Spring顶级项目的Spring GraphQL、基于响应式编程的Spring RSocket协议、用于实现系统安全的认证缓存等,在同类书籍中还没有出现过。
如何阅读本书
本书分成以下七部分。
第一部分:Spring Boot概述。在这一部分,我们介绍Spring Boot框架中的基本概念,并通过简单的案例介绍Spring Boot框架的基本使用方法。通过这一部分的学习,读者可以快速掌握Spring Boot的入门知识。
第二部分:核心容器。在这一部分,我们介绍在使用Spring容器时应该关注的最佳实践,并讨论 Spring内核最重要的两个功能特性,即依赖注入和面向切面。我们将从功能的使用和原理的剖析两方面来展开讨论。通过这一部分的学习,读者可以在日常使用Spring容器的过程中明确需要考虑的开发技巧,并掌握依赖注入的不同类型对框架使用方式的影响,以及如何正确选择合适的AOP 代理机制。
第三部分:Web 服务。在这一部分,我们讨论Web应用程序开发的最佳实践,包括使用Spring HATEOAS开发自解释Web API、使用Spring GraphQL开发查询式Web API、针对传统Spring MVC的异步编程模型,以及新型的基于响应式流的WebFlux组件。同时,我们还讨论目前非常流行的、Spring 5默认内置的、用来提高网络通信性能的RSocket协议。通过这一部分的学习,读者可以系统掌握在使用Spring Boot框架时所应掌握的各个Web开发组件以及对应的使用技巧。
第四部分:内置缓存。在这一部分,我们关注Spring Boot框架的一个高性能功能组件,即缓存。我们讨论Spring中内置缓存的使用方法以及它的底层实现原理,并结合Spring Security框架讨论缓存机制在用户认证流程中的作用。通过这一部分的学习,读者可以掌握 Spring针对缓存的抽象思想、架构设计以及实现过程,同时理解高性能安全性的解决方案。
第五部分:数据访问。在这一部分,我们关注高效访问关系型数据的相关实践。我们系统讨论基于JDBC以及ORM框架实现数据访问的常见开发陷阱及其解决方法,同时,进一步分析如何基于缓存机制来优化数据访问性能。通过这一部分的学习,读者可以掌握如何系统性地分析和解决关系型数据访问过程中的开发问题,并深入理解Spring JDBC、Spring Data JPA等框架。
第六部分:并发编程。在这一部分,我们讨论Spring框架的一组并发编程组件,包括任务执行器、任务调度器以及@Async注解,分析这些组件与JDK中的并发编程组件之间的整合过程,并给出源码级的原理分析。通过这一部分的学习,读者可以掌握如何将传统的同步执行模式转化为异步执行模式,从而提升系统的响应性和并发性。
第七部分:监控和扩展。在这一部分,我们关注如何找到Spring Boot应用程序中的性能问题并进行有效的监控和度量,通过引入Actuator组件并整合自定义的度量指标来实现这一目标。同时,我们还讨论Spring Boot的整个生态系统,包括Spring Boot Starter、Spring Boot与微服务、Spring Boot与云原生以及Spring Boot测试方案。通过这一部分的学习,读者可以掌握常见的系统监控和度量的实现方法,以及基于Spring Boot生态圈进行系统扩展的实现方法。
勘误和支持
由于作者的水平有限,书中难免会出现一些错误或者不准确的地方,恳请读者批评指正。书中的全部源文件可以从华章网站(www.hzbook.com)下载,也可以从作者的GitHub上下载:https://github.com/tianminzheng/spring-boot-examples。如果你有更多的宝贵意见,也欢迎发送邮件至1755982343@qq.com,期待得到你的真挚反馈。
致谢
感谢我的家人特别是我的妻子章兰婷女士在我将大量晚上和周末时间用来写作的情况下,能够给予我极大的支持和理解。感谢以往以及现在公司的同事们,身处业界领先的公司和团队中,我得到很多学习和成长的机会,没有大家的帮助,不可能有这本书的诞生。感谢机械工业出版社的杨福川老师,这本书能够这么快出版,离不开他的支持和帮助。

上架指导

程序设计

封底文字

Spring技术体系已经是Java企业级应用领域的事实标准,而Spring Boot无疑使得Spring技术体系发生了革命性变化,是Spring在云时代的大环境下,技术不断升级、历久弥新、迈向下一个大的技术周期的有力支撑。在使用体验上,Spring Boot实现了从臃肿复杂到简洁优雅的转身,极大提升了设计和开发的效率,从而释放了生产力。本书由浅入深、由内及外地介绍了Spring Boot的技术内核、应用技巧和扩展生态,助力读者在原理学习和实际开发中乘风破浪,一往无前。
——秦金卫  Apache Dubbo/ShardingSphere PMC

Spring Boot已经成为Java程序员不得不学的技术。本书覆盖了Spring Boot的核心技术点,从基础概念开始逐步过渡到技术原理及需要重点关注的面试点,帮助读者在快速学会使用Spring Boot的同时,掌握Spring Boot技术原理和解决方案。
——纯洁的微笑  公众号“纯洁的微笑”创始人

近年来,伴随着应用程序升级改造,企业对敏捷开发技术的需求愈加迫切,其中Spring Boot快速开发框架已经成为核心技术,是每一名Java工程师必须掌握的技能。郑老师在Spring Boot领域有多年的实战经验,本书是他多年经验的总结,在这里推荐给大家,希望可以解决大家在使用Spring Boot过程中的诸多疑惑。
——齐毅(IT老齐) 前京东架构师

Spring Boot是我们非常常用的框架之一,它可以连接到互联网常用的技术栈,我们却很少花心思去系统性地理解Spring Boot。本书基于作者对Spring Boot核心技术的理解与实践经验,结合优雅的实战代码,由点到面地阐释了各个技术点。本书适合想要入门Spring Boot的初级工程师阅读,让他们体系化地了解Spring Boot生态圈层技术和应用;更适合想深入理解Spring Boot的中高级工程师阅读,让他们做到知其所以然。
——芋道源码  公众号“芋道源码”创始人

作者简介

郑天民 著:作者介绍
郑天民(作者照片)
资深架构师和技术专家,有近15年的软件研发和架构经验。现担任某知名健康科技公司技术总监,先后就职于多家大型上市公司和互联网独角兽公司,担任系统架构师、技术总监和CTO等职务。
对架构设计和技术管理有深入的理解,积累了丰富的经验,研发和主持过10余个面向研发人员的技术和管理类培训课程。热衷于总结和分享,著作有《系统架构设计》等,译作有《Spring响应式编程》等。
阿里云MVP、腾讯云TVP、TGO鲲鹏会会员。

图书目录

前言
第一部分 Spring Boot概述
第1章 引入Spring Boot 2
1.1 Spring核心概念 2
1.1.1 Spring基础框架 3
1.1.2 Spring技术生态 4
1.2 开发Spring Boot应用程序 5
1.2.1 从Spring到Spring Boot 5
1.2.2 Spring Boot应用程序结构和示例 6
1.2.3 Spring Boot配置体系 11
1.3 Spring Boot实战内容和案例 13
1.3.1 核心容器 14
1.3.2 Web服务 15
1.3.3 内置缓存 16
1.3.4 数据访问 17
1.3.5 并发编程 19
1.3.6 监控和扩展 20
1.4 本章小结 22
第二部分 核心容器
第2章 依赖注入类型和原理 24
2.1 Spring依赖注入类型 24
2.1.1 字段注入 25
2.1.2 构造器注入 26
2.1.3 Setter方法注入 27
2.2 Spring依赖注入原理分析 28
2.2.1 Bean的注册 29
2.2.2 Bean的实例化 31
2.3 Spring循环依赖案例分析 33
2.3.1 三级缓存结构 34
2.3.2 循环依赖解决方案 36
2.3.3 消除循环依赖案例分析 37
2.4 Spring依赖注入实战经验 42
2.4.1 把握Bean的作用域 42
2.4.2 灵活使用注解配置 43
2.4.3 设置组件扫描范围 44
2.4.4 不同配置的性能分析 44
2.5 Spring依赖注入面试题分析 45
2.6 本章小结 46
第3章 面向切面概念和实践 47
3.1 面向切面与Spring AOP 48
3.1.1 Spring AOP核心概念 48
3.1.2 Spring AOP案例分析 49
3.2 动态代理机制与Spring AOP 52
3.2.1 JDK动态代理 53
3.2.2 CGLIB动态代理 54
3.2.3 ProxyFactoryBean 55
3.3 AOP代理机制对性能的影响案例分析 57
3.3.1 测试案例设计 57
3.3.2 案例结果分析 59
3.4 AOP实战经验 59
3.4.1 活用切点表达式 59
3.4.2 确保类内方法调用能够应用代理 61
3.4.3 避免代理机制引起多次初始化过程 62
3.4.4 优先使用JDK动态代理 62
3.5 Spring AOP面试题分析 62
3.6 本章小结 63
第三部分 Web 服务
第4章 构建轻量级Web技术体系 66
4.1 Spring WebMVC 66
4.1.1 创建Web服务 67
4.1.2 消费Web服务 69
4.1.3 RestTemplate远程调用原理分析 71
4.1.4 Spring WebMVC案例分析 80
4.2 Spring HATEOAS 83
4.2.1 HATEOAS和HAL 84
4.2.2 引入Spring HATEOAS 87
4.2.3 Spring HATEOAS案例分析 87
4.3 Spring GraphQL 93
4.3.1 GraphQL与RESTful API 94
4.3.2 集成Spring和GraphQL 96
4.3.3 Spring GraphQL案例分析 100
4.4 轻量级Web实战经验 105
4.4.1 设计合理的HTTP端点 106
4.4.2 开发自解释型Open API 106
4.4.3 使用GraphQL替代RESTful API 107
4.5 轻量级Web面试题分析 108
4.6 本章小结 110
第5章 应用响应式Web开发组件 111
5.1 响应式编程和Spring Boot 111
5.1.1 响应式流规范和实现框架 111
5.1.2 响应式编程的应用场景分析 115
5.1.3 Spring响应式编程组件 117
5.2 Spring WebFlux 119
5.2.1 对比WebMVC和WebFlux架构 119
5.2.2 创建响应式Web API 121
5.2.3 消费响应式Web API 123
5.2.4 Spring WebFlux案例分析 124
5.3 Spring RSocket 129
5.3.1 RSocket协议 129
5.3.2 RSocket编程模型 130
5.3.3 Spring RSocket案例分析 132
5.4 响应式Web实战经验 135
5.4.1 使用非阻塞式Web服务提升系统性能 135
5.4.2 构建全栈响应式服务体系 137
5.4.3 使用RSocket替代HTTP 138
5.5 响应式Web面试题分析 139
5.6 本章小结 140
第四部分 内置缓存
第6章 打造高性能系统缓存 142
6.1 缓存注解 142
6.1.1 @Cacheable注解 143
6.1.2 @CachePut注解 145
6.1.3 @CacheEvict注解 145
6.2 缓存键管理 146
6.2.1 自定义键生成策略 146
6.2.2 默认键生成策略 147
6.3 缓存配置 147
6.4 Spring缓存案例分析 150
6.5 缓存实现原理 154
6.5.1 Cache和CacheManager接口 155
6.5.2 CacheInterceptor拦截器 158
6.6 系统缓存实战经验 160
6.6.1 使用自定义缓存注解 161
6.6.2 使用自定义缓存键生成器 161
6.6.3 自定义Cache和CacheManager 162
6.7 系统缓存面试题分析 164
6.8 本章小结 165
第7章 为安全控制添加认证缓存 166
7.1 Spring Security安全框架 166
7.1.1 Spring Security认证架构 166
7.1.2 Spring Security用户认证配置实例 168
7.2 Spring Security与认证缓存 169
7.2.1 安全性处理对性能的影响 169
7.2.2 认证缓存 170
7.3 Spring Security认证缓存案例分析 172
7.3.1 初始化用户认证数据 173
7.3.2 集成用户认证缓存 174
7.4 认证缓存原理分析 178
7.4.1 UserDetails和Authentication 178
7.4.2 UserCache和Authentication-Provider 181
7.5 认证缓存实战经验 182
7.5.1 自定义UserDetails 182
7.5.2 自定义Authentication-Provider 183
7.6 认证缓存面试题分析 184
7.7 本章小结 185
第五部分 数据访问
第8章 Spring JDBC解决方案 188
8.1 JDBC规范 188
8.2 Spring JDBC解决方案 189
8.2.1 Spring JDBC工具类概览 189
8.2.2 JdbcTemplate应用 190
8.2.3 SimpleJdbcInsert应用 196
8.2.4 Spring JDBC案例分析 197
8.3 JdbcTemplate实现原理 198
8.3.1 模板方法和回调机制 198
8.3.2 从JDBC API到Jdbc-Template的演变 199
8.3.3 JdbcTemplate源码解析 203
8.4 Spring JDBC实战经验 205
8.4.1 优化事务隔离等级 205
8.4.2 优化Fetch Size 205
8.4.3 优化连接池配置 206
8.4.4 选择合适的Statement 207
8.4.5 使用批处理 207
8.4.6 选择合适的提交模式 208
8.5 Spring JDBC面试题分析 208
8.6 本章小结 209
第9章 应用Spring ORM最佳实践 210
9.1 Spring Data架构与应用 210
9.1.1 Spring Data架构 210
9.1.2 Spring Data JPA 212
9.1.3 Spring Data JPA案例分析 212
9.2 N+1性能问题 216
9.2.1 N+1问题分析 217
9.2.2 JOIN FETCH 221
9.3 Spring ORM实战经验 224
9.3.1 通过统计找到数据访问瓶颈 224
9.3.2 使用延迟加载降低数据库访问 224
9.3.3 使用多级缓存提升数据访问性能 225
9.4 Spring ORM面试题分析 226
9.5 本章小结 227
第六部分 并发编程
第10章 解析Spring Async并发编程 230
10.1 Spring @Async注解 230
10.1.1 @Async注解的异步处理机制 230
10.1.2 @Async注解的两种处理模式 232
10.2 Spring @Async实现原理 234
10.2.1 基于代理的异步执行模型案例分析 234
10.2.2 Spring @Async注解原理分析 238
10.3 Spring Web异步处理 244
10.3.1 Web异步处理需求和场景 244
10.3.2 WebAsyncTask 245
10.3.3 Web异步处理案例分析 246
10.4 Spring Async实战经验 249
10.4.1 灵活使用多种Future机制 249
10.4.2 合理设置线程池 251
10.5 Spring Async面试题分析 252
10.6 本章小结 253
第11章 使用任务执行器和调度器 254
11.1 Java执行器模型 254
11.1.1 Executor 255
11.1.2 ThreadPool 255
11.2 Spring任务执行器 257
11.2.1 TaskExecutor应用方式 257
11.2.2 TaskExecutor运行原理 258
11.3 Spring任务调度器 261
11.3.1 TaskScheduler应用方式 261
11.3.2 TaskScheduler运行原理 262
11.4 任务执行器和调度器实战经验 264
11.4.1 灵活使用多种TaskExecutor 264
11.4.2 @Scheduled注解的使用技巧 265
11.5 任务执行器和调度器面试题分析 265
11.6 本章小结 266
第七部分 监控和扩展
第12章 为应用程序添加系统监控 268
12.1 Spring Boot Actuator组件 268
12.1.1 Actuator组件 268
12.1.2 扩展Actuator端点案例分析 272
12.1.3 自定义Actuator端点案例分析 274
12.1.4 Actuator组件在Spring家族中的应用案例 276
12.2 Admin Server组件 278
12.2.1 构建Admin Server 278
12.2.2 Admin Server系统监控案例分析 282
12.3 系统监控实战经验 286
12.3.1 通过替换默认组件提升Spring Boot性能 286
12.3.2 使用PerformanceMonitor-Interceptor 288
12.3.3 实现自定义的性能度量指标 289
12.4 系统监控面试题分析 290
12.5 本章小结 291
第13章 Spring Boot生态体系及扩展 292
13.1 Spring Boot Starter原理与应用 292
13.1.1 Spring Boot自动配置原理 293
13.1.2 基于Starter集成Spring Boot案例分析 302
13.2 Spring Boot与微服务 306
13.2.1 微服务架构简介 306
13.2.2 Spring Cloud与Spring Boot 307
13.2.3 Spring微服务架构案例分析 308
13.3 Spring Boot与云原生 316
13.3.1 Spring Native和原生镜像 316
13.3.2 Spring Native案例分析 317
13.4 测试Spring Boot 320
13.4.1 Spring Boot中的测试解决方案 320
13.4.2 Spring Boot应用程序的测试流程 322
13.4.3 测试Spring Boot数据访问层 325
13.4.4 测试Spring Boot业务逻辑层 326
13.4.5 测试Spring Boot Web服务层 330
13.4.6 Spring Boot测试案例分析 334
13.5 生态扩展面试题分析 337
13.6 本章小结 338

教学资源推荐
作者: [美]罗伯特·哈珀(Robert Harper) 著
作者: 刘海燕 荆涛 主编 王子强 武卉明 杨健康 周睿 编著
作者: 过敏意 主编吴晨涛 李超 阮娜 陈雨亭 编著
参考读物推荐
作者: [瑞士]路易斯·汤斯顿(Lewis Tunstall),[瑞士]莱安德罗·冯·韦拉(Leandro von Werra),[法]托马斯·沃尔夫(Thomas Wolf) 著
作者: 马俊昌 著
作者: 陈光剑 编著
作者: 霍丙乾 著