第1章 Spring 5 概述
1.1 Spring 与 Java EE
1.2 Spring 简史
1.3 Spring 5 的新特性
实战 1.4 快速开启第一个 Spring 应用
1.5 Gradle 与 Maven 的抉择
第2章 Spring 框架核心概念
2.1 Spring 框架总览
2.2 IoC 容器
2.3 AOP 编程
2.4 资源处理
2.5 Bean 验证 1
2.6 表达式语言 SpEL 1
2.7 数据缓冲器和编解码器 1
2.8 空安全 1
第3章 测试
3.1 测试概述
3.2 测试的类型和范围 1
3.3 如何进行微服务的测试 1
第4章 单元测试 1
4.1 Mock 对象 1
4.2 测试工具类 1
第5章 集成测试 1
5.1 集成测试概述
5.2 测试相关的注解
5.3 Spring TestContext 框架 1
5.4 Spring MVC Test 框架
★新功能 5.5 WebTestClient
第6章 事务管理
6.1 事务管理概述
6.2 通过事务实现资源同步
6.3 声明式事务管理
6.4 编程式事务管理
6.5 事件中的事务
第7章 DAO
7.1 DAO 概述
7.2 DAO 常用异常类
7.3 DAO 常用注解
第8章 基于 JDBC 的数据访问
8.1 Spring JDBC 概述
8.2 JDBC 核心类
8.3 控制数据库连接
8.4 批处理
8.5 SimpleJdbc 类
8.6 JDBC 转为对象模型
8.7 内嵌数据库
8.8 初始化 DataSource
第9章 基于 ORM 的数据访问
9.1 Spring ORM 概述
9.2 ORM 集成注意事项
9.3 集成 Hibernate
9.4 JPA
第10章 XML 与对象的转换
10.1 XML 解析概述
10.2 XML 的序列化与反序列化
10.3 常用 XML 解析工具
第11章 Spring Web MVC
11.1 Spring Web MVC 概述
11.2 DispatcherServlet
11.3 过滤器
11.4 控制器
11.5 URI 处理
11.6 异常处理
11.7 异步请求
11.8 CORS 处理
11.9 HTTP 缓存
11.10 MVC 配置
11.11 视图处理
★新功能 11.12 HTTP/2
实战 11.13 基于 Spring Web MVC 的 REST 接口
第12章 REST 客户端
12.1 RestTemplate
★新功能 12.2 WebClient
实战 12.3 基于 RestTemplate 的天气预报服务
第13章 WebSocket
13.1 WebSocket 概述
13.2 WebSocket 常用 API
13.3 SockJS
13.4 STOMP
实战 13.5 基于 STOMP 的聊天室
第14章 Spring WebFlux
★新功能 14.1 响应式编程概述
★新功能 14.2 Spring 中的响应式编程
★新功能 14.3 DispatcherHandler
★新功能 14.4 控制器
★新功能 14.5 常用函数
★新功能 14.6 WebFlux 相关配置
★新功能 14.7 CORS 处理
第15章 响应式编程中的 WebClient
★新功能 重点15.1 retrieve() 方法
★新功能 重点15.2 exchange() 方法
★新功能 15.3 请求主体
★新功能 15.4 生成器
★新功能 15.5 过滤器
★新功能 实战15.6 基于 WebClient 的文件上传、下载
第16章 响应式编程中的 WebSocket
16.1 WebSocket 概述
16.2 WebSocket 常用 API
★新功能 16.3 WebSocketClient
第17章 常用集成模式
17.1 Spring 集成模式概述
17.2 使用 RMI
17.3 使用 Hessian
17.4 使用 HTTP
17.5 Web 服务
17.6 JMS
17.7 REST 服务
第18章 EJB 集成
18.1 EJB 集成概述
18.2 EJB 集成的实现
第19章 JMS 集成
19.1 JMS 集成概述
19.2 Spring JMS
19.3 发送消息
19.4 接收消息
19.5 JCA 消息端点
19.6 基于注解的监听器
19.7 JMS 命名空间
难点 19.8 基于 JMS 的消息发送、接收
第20章 JMX 集成
20.1 JMX 集成概述
20.2 bean 转为 JMX
20.3 bean 的控制管理
20.4 通知
第21章 JCA CCI 集成
21.1 JCA CCI 集成概述
21.2 配置 CCI
21.3 使用 CCI 进行访问
21.4 CCI 访问对象建模
21.5 CCI 中的事务处理
第22章 使用 E-mail
22.1 使用 E-mail 概述
22.2 实现发送 E-mail
22.3 使用 MimeMessageHelper
实战 22.4 实现 E-mail 服务器
第23章 任务执行与调度
23.1 任务执行与调度概述
23.2 TaskExecutor
23.3 TaskScheduler
23.4 任务调度及异步执行
23.5 使用 Quartz Scheduler
实战 23.6 基于 Quartz Scheduler 的天气预报系统
第24章 缓存
24.1 缓存概述
24.2 声明式缓存注解
24.3 JCache 注解
24.4 基于 XML 的声明式缓存
24.5 配置缓存存储
实战 24.6 基于缓存的天气预报系统
第25章 Spring Boot
25.1 从单块架构到微服务架构
25.2 微服务设计原则
25.3 Spring Boot 概述
实战 25.4 开启第一个 Spring Boot 项目
第26章 Spring Cloud
★新功能 26.1 Spring Cloud 概述
★新功能 26.2 Spring Cloud 入门配置
★新功能 26.3 Spring Cloud 的子项目介绍
★新功能 实战 26.4 实现微服务的注册与发现
附录
附录A EJB 规范摘要
附录B Bean Validation 内置约束
附录C 提升 Gradle 的构建速度
附录D 本书所采用的技术及相关版本
参 考 文 献
前言
Preface
写作背景
Spring 自诞生以来,一直被广大开发者作为 Java 企业级应用开发的首选。无论是早年流行的 SSH
框架(Spring、 Struts、 Hibernate),还是近些年盛行的 SSM 组合(Spring、 Spring MVC、 MyBatis),
唯一不变的就是 Spring。伴随互联网十几年的风云变迁, Spring 也不断地进行着技术革命,向着云计算、
平台化方向发展。
Spring 至今仍然奉行着最初的宗旨——简化企业级应用的开发。特别是 Spring Boot、 Spring Cloud
等项目的诞生,进一步简化了基于 Spring 的企业级、分布式系统的应用开发方式。为此,笔者在 2014
年以开源方式翻译了《Spring Framework 4.x 参考文档》,备受广大开发者关注。在 2017 年,笔者编写
了一系列关于 Spring 开发实战的书籍及培训视频教程,包括《Spring Boot 企业级应用开发实战》和《Spring
Cloud 微服务架构开发实战》等①,致力于让广大读者能够真正领略 Spring 所带来的力量和乐趣。
目前, Spring 5 已经发布,并带来了大量的新特性。鉴于市面上关于 Spring 5 的介绍资料比较匮乏,
故笔者撰写本书以补空白,助力国内开发者能够享受到新技术所带来的便利。
本书特色
本书具有以下特色。
(1)全面: 本书全面介绍 Spring 框架,涵盖了 Spring 核心、测试、数据访问、系统集成、 Web 开发、
响应式编程及微服务等方面在内的共 26 章的内容,可以说是 Spring 技术的“百科全书”。
(2) 前瞻: 本书基于 Spring 5 版本来编写,除了涉及 Spring 5 版本的新特性外,还介绍了 REST 服
务、响应式 Web 开发、微服务设计、 Spring Boot 及 Spring Cloud 等方面的前瞻技术。
(3) 实用: 本书除了讲解 Spring 的理论知识外,还在每个知识点上辅以大量的实战案例,使理论
可以联系实际,具备更强的可操作性。
(4)简明: 目录标注有“新功能”“难点”及“重点”等标识,方便读者做好知识点的归纳和总结。
(5) 权威: 以 Spring 官方文档和 Spring 框架源码为主要参考依据,确保知识点的权威性。
源代码
本书提供源代码下载,下载地址为 http://github.com/waylau/spring-5-book。
① 有关笔者的书籍、教程介绍,可见https://waylau.com/books/。
文前.indd 1 2018/10/15 21:32:07Spring 5 开发大全
2
本书所采用的技术及相关版本
技术版本是非常重要的,因为不同的版本之间存在兼容性问题,而且不同版本中的软件所对应的功
能也是不同的。本书所列出的技术在版本上相对较新,并且都是经过笔者实际测试的。读者在自行编写
代码时,可以参考本书所列出的版本,从而避免很多因版本兼容性所产生的问题。建议读者将相关开发
环境设置成本书所采用的开发环境,或者不低于本书所列的配置。详细的版本配置可以参阅本书“附录 D”
的内容。
本书示例采用 Eclipse 编写,但示例源码与具体的 IDE 无关,读者可以选择适合自己的 IDE,如
IntelliJ IDEA 和 NetBeans 等。运行本书示例,请确保 JDK 版本不低于 8。
勘误和交流
本书如有勘误,会在 http://github.com/waylau/spring-5-book 上进行发布。由于笔者编写能力有限,
加上时间仓促,疏漏之处在所难免,欢迎读者批评指正。
读者也可以通过以下方式直接联系笔者。
博客: https://waylau.com
邮箱: waylau521@gmail.com
微博: http://weibo.com/waylau521
开源: https://github.com/waylau
致谢
感谢北京大学出版社的各位工作人员为本书的出版所做出的努力。
感谢我的父母、妻子和两个女儿。由于撰写本书,牺牲了很多陪伴家人的时间,在此感谢家人对我
工作的理解和支持。
感谢 Spring 团队为 Java 社区贡献了这么优秀的框架,由衷地希望 Spring 框架发展得越来越好!
最后,特别感谢 Rod Johnson、 Juergen Hoeller 和 Yann Caroff,是他们最早创建了 Spring。
柳伟卫
前瞻
本书基于Spring 5版本编写,除讲解Spring 5新特性外,还介绍了REST 服务、响应式Web 开发、微服务设计、Spring Boot及Spring Cloud等方面的前瞻技术。
全面
本书全面介绍Spring框架,涵盖Spring核心、测试、数据访问、系统集成、Web开发、响应式编程及微服务等方面在内的26章的内容,可以说是Spring技术的“百科全书”。
实用
本书除了讲解Spring的理论知识外,还在每个知识点上辅以大量的实战案例,使理论可以联系实际,具备更强的可操作性。
简明
目录标注有“新功能”“实战”“难点”及“重点”等标识,方便读者做好知识点的归纳和总结。
权威
以Spring官方文档和Spring框架源码为主要参考依据,确保知识点的权威性。
柳伟卫,英文名 Way Lau,关注编程、系统架构、性能优化。在 IT 公司担任项目经理、架构师、高级开发顾问等职位,具有多年软件开发管理及系统架构经验。负责过多个省、国家级大型分布式系统的设计与研发,参与了多个大型项目的微服务架构的技术改造,在实际工作中,积累了大量的微服务架构经验。
自 Spring 诞生以来,以 Spring 技术栈为核心的企业级应用开发方式深入人心,已然成为Java EE开发的最佳实践。随着Spring 5版本的发布,Spring自身也发生了巨大变革。本书力求全面介绍Spring框架,涵盖了Spring核心、测试、数据访问、集成、Web开发、微服务等所有相关内容。同时,本书基于Spring 5最新版本来编写,除了涉及Spring 5版本的新特性之外,还介绍了 REST 服务、响应式 Web 开发、微服务设计、Spring Boot、Spring Cloud 等方面的前瞻技术。
全书分为七部分,共26章。第一部分为Spring核心篇(第1~2章),内容涵盖Spirng 5的新特性、控制反转、AOP、资源处理、Bean验证、SpEL、数据缓冲器和编解码器等;第二部分为测试篇(第3~5章),内容涵盖单元测试、集成测试等;第三部分为数据访问篇(第6~10章),内容涵盖事务管理、DAO、JDBC、ORM、XML等;第四部分为基于Servlet的Web开发篇(第11~13章),内容涵盖Spring Web MVC、REST客户端、WebSocket等;第五部分为响应式Web开发篇(第14~16章),内容涵盖Spring WebFlux、响应式编程中的WebClient和WebSocket等;第六部分为集成篇(第17~24章),内容涵盖RMI、Hessian、HTTP调用、Web服务、JMS、AMQP、REST服务、EJB、JMX、CCI、Email、任务执行与调度、缓存等;第七部分为微服务篇(第25~26章),内容涵盖微服务设计原则、Spring Boot、Spring Cloud 等。
本书全面讲解了Spring的相关理论知识,并辅以大量的代码案例,理论联系实际,可操作性强非常适用于Java开发者及对以Spring为核心的Java EE开发感兴趣的计算机专业的学生、软件开发人员、系统架构师。