本书是经典的、畅销的Spring学习和实践指南。第5版针对Spring 5进行了全面更新。第5版涵盖了Spring 5.0和Spring Boot 2.0里程碑式的更新。全书分为5个部分,共19章。第1部分(第1~5章)涵盖了构建Spring应用的基础话题。第2部分(第6~9章)讨论如何将Spring应用与其他应用进行集成。第3部分(第10~12章)探讨Spring对反应式编程提供的全新支持。第4部分(第13~15章)拆分单体应用模型,介绍Spring Cloud和微服务开发。第5部分(第16~19章)讨论如何为应用投入生产环境做准备以及如何进行部署。
全球有超过100 000名开发者使用本书来学习Spring 畅销经典Spring技术图书,针对Spring 5全面升级 Spring框架能够让Java开发人员的工作更加轻松。Spring 5的新特性通过微服务、反应式开发进一步提升了生产效率。随着与Spring Boot的全面集成,我们现在用*少的配置就可以启动复杂的项目。全新升级的WebFlux框架对反应式应用程序提供了开箱即用的支持。 本书继续以众所周知的清晰风格,介绍了Spring 5的核心特性。你将亲自动手,逐步构建出一个安全的、以数据库作为支撑的Web应用。在这个过程中,你还将会探索反应式编程、微服务、服务发现、RESTful API、部署并掌握专家级的*实践。无论你是Spring的初学者,还是想要升级到Spring 5,本书都不容错过。 本书包含一下内容 ·构建反应式应用; · 使用Spring MVC构建Web应用和RESTful Web服务; ·使用Spring Security保护应用; · Spring 5新特性。 专家推荐 《Spring实战(第5版)》进行了全面的升级,兼顾了实战指南和综合理论。 ——Daniel Vaughan European Bioinformatics Institute 学习Spring框架的很棒的参考指南。 ——Colin Joyce,Cisco 本书包含了你需要掌握的所有关于Spring的知识,并且涵盖了如何构建云原生应用。 —— David Witherspoon,Parsons 本书堪称Spring开发人员的“瑞士军刀”。 ——Riccardo Noviello Nuvio Software Solutions
目录
- 第 1 部分 Spring 基础
- 第 1 章 Spring 起步 3
- 1.1 什么是Spring 4
- 1.2 初始化Spring 应用 6
- 1.2.1 使用Spring Tool Suite
- 初始化Spring 项目 7
- 1.2.2 检查Spring 项目的
- 结构 10
- 1.3 编写Spring 应用 16
- 1.3.1 处理Web 请求 16
- 1.3.2 定义视图 17
- 1.3.3 测试控制器 18
- 1.3.4 构建和运行应用 20
- 1.3.5 了解Spring Boot DevTools 21
- 1.3.6 回顾一下 23
- 1.4 俯瞰Spring 风景线 24
- 1.4.1 Spring 核心框架 24
- 1.4.2 Spring Boot 25
- 1.4.3 Spring Data 25
- 1.4.4 Spring Security 25
- 1.4.5 Spring Integration 和Spring
- Batch 26
- 1.4.6 Spring Cloud 26
- 1.5 小结 26
- 第 2 章 开发Web 应用 27
- 2.1 展现信息 27
- 2.1.1 构建领域类 28
- 2.1.2 创建控制器类 30
- 2.1.3 设计视图 33
- 2.2 处理表单提交 37
- 2.3 校验表单输入 43
- 2.3.1 声明校验规则 43
- 2.3.2 在表单绑定的时候执行
- 校验 45
- 2.3.3 展现校验错误 46
- 2.4 使用视图控制器 48
- 2.5 选择视图模板库 49
- 2.6 小结 52
- 第3 章 使用数据 53
- 3.1 使用JDBC 读取和写入
- 数据 53
- 3.1.1 调整领域对象以适应
- 持久化 55
- 3.1.2 使用JdbcTemplate 56
- 3.1.3 定义模式和预加载数据 61
- 3.1.4 插入数据 63
- 3.2 使用Spring Data JPA 持久
- 化数据 72
- 3.2.1 添加Spring Data JPA 到
- 项目中 72
- 3.2.2 将领域对象标注为实体 73
- 3.2.3 声明JPA repository 76
- 3.2.4 自定义JPA repository 77
- 3.3 小结 80
- 第4 章 保护Spring 81
- 4.1 启用Spring Security 81
- 4.2 配置Spring Security 83
- 4.2.1 基于内存的用户存储 85
- 4.2.2 基于JDBC 的用户存储 86
- 4.2.3 以LDAP 作为后端的
- 用户存储 89
- 4.2.4 自定义用户认证 92
- 4.3 保护Web 请求 100
- 4.3.1 保护请求 100
- 4.3.2 创建自定义的登录页 103
- 4.3.3 退出 105
- 4.3.4 防止跨站请求伪造 106
- 4.4 了解用户是谁 107
- 4.5 小结 109
- 第5 章 使用配置属性 111
- 5.1 细粒度的自动配置 112
- 5.1.1 理解Spring 的环境抽象 112
- 5.1.2 配置数据源 114
- 5.1.3 配置嵌入式服务器 115
- 5.1.4 配置日志 116
- 5.1.5 使用特定的属性值 118
- 5.2 创建自己的配置属性 118
- 5.2.1 定义配置属性的持有者 120
- 5.2.2 声明配置属性元数据 123
- 5.3 使用profile 进行配置 125
- 5.3.1 定义特定profile 的属性 126
- 5.3.2 激活profile 127
- 5.3.3 使用profile 条件化地创建
- bean 128
- 5.4 小结 129
- 第2部分 Spring 集成
- 第6 章 创建REST 服务 133
- 6.1 编写RESTful 控制器 134
- 6.1.1 从服务器中检索数据 136
- 6.1.2 发送数据到服务器端 140
- 6.1.3 在服务器上更新数据 142
- 6.1.4 删除服务器上的数据 144
- 6.2 启用超媒体 145
- 6.2.1 添加超链接 147
- 6.2.2 创建资源装配器 149
- 6.2.3 命名嵌套式的关联关系 154
- 6.3 启用数据后端服务 155
- 6.3.1 调整资源路径和关系
- 名称 157
- 6.3.2 分页和排序 159
- 6.3.3 添加自定义的端点 160
- 6.3.4 为Spring Data 端点添加
- 自定义的超链接 162
- 6.4 小结 163
- 第7 章 消费REST 服务 165
- 7.1 使用RestTemplate 消费
- REST 端点 166
- 7.1.1 GET 资源 167
- 7.1.2 PUT 资源 169
- 7.1.3 DELETE 资源 169
- 7.1.4 POST 资源 169
- 7.2 使用Traverson 导航
- REST API 170
- 7.3 小结 172
- 第8 章 发送异步消息 173
- 8.1 使用JMS 发送消息 174
- 8.1.1 搭建JMS 环境 174
- 8.1.2 使用JmsTemplate 发送
- 消息 176
- 8.1.3 接收JMS 消息 183
- 8.2 使用RabbitMQ 和
- AMQP 186
- 8.2.1 添加RabbitMQ 到
- Spring 中 188
- 8.2.2 通过RabbitTemplate 发送
- 消息 189
- 8.2.3 接收来自RabbitMQ 的
- 消息 192
- 8.3 使用Kafka 的消息 196
- 8.3.1 为Spring 搭建支持Kafka
- 消息的环境 197
- 8.3.2 通过KafkaTemplate 发送
- 消息 198
- 8.3.3 编写Kafka 监听器 200
- 8.4 小结 201
- 第9 章 Spring 集成 203
- 9.1 声明一个简单的
- 集成流 204
- 9.1.1 使用XML 定义集成流 205
- 9.1.2 使用Java 配置集成流 207
- 9.1.3 使用Spring Integration 的
- DSL 配置 209
- 9.2 Spring Integration 功能
- 概览 210
- 9.2.1 消息通道 211
- 9.2.2 过滤器 212
- 9.2.3 转换器 213
- 9.2.4 路由器 214
- 9.2.5 切分器 216
- 9.2.6 服务激活器 218
- 9.2.7 网关 220
- 9.2.8 通道适配器 221
- 9.2.9 端点模块 223
- 9.3 创建Email 集成流 224
- 9.4 小结 229
- 第3部分 反应式Spring
- 第 10 章 理解反应式编程 233
- 10.1 反应式编程概览 234
- 10.2 初识Reactor 237
- 10.2.1 绘制反应式流图 238
- 10.2.2 添加Reactor 依赖 239
- 10.3 使用常见的反应式
- 操作 240
- 10.3.1 创建反应式类型 240
- 10.3.2 组合反应式类型 244
- 10.3.3 转换和过滤反应式流 248
- 10.3.4 在反应式类型上执行逻辑
- 操作 258
- 10.4 小结 259
- 第 11 章 开发反应式API 261
- 11.1 使用Spring WebFlux 261
- 11.1.1 Spring WebFlux 简介 262
- 11.1.2 编写反应式控制器 264
- 11.2 定义函数式请求处
- 理器 268
- 11.3 测试反应式控制器 271
- 11.3.1 测试GET 请求 271
- 11.3.2 测试POST 请求 274
- 11.3.3 使用实时服务器进行
- 测试 275
- 11.4 反应式消费
- REST API 276
- 11.4.1 获取资源 277
- 11.4.2 发送资源 279
- 11.4.3 删除资源 280
- 11.4.4 处理错误 280
- 11.4.5 交换请求 282
- 11.5 保护反应式Web API 283
- 11.5.1 配置反应式Web 应用的
- 安全性 284
- 11.5.2 配置反应式的用户详情
- 服务 285
- 11.6 小结 287
- 第 12 章 反应式持久化数据 289
- 12.1 理解Spring Data 的
- 反应式概况 290
- 12.1.1 Spring Data 反应式本
- 质论 290
- 12.1.2 反应式和非反应式类型
- 之间的转换 291
- 12.1.3 开发反应式repository 292
- 12.2 使用反应式的
- Cassandra repository 293
- 12.2.1 启用Spring Data
- Cassandra 293
- 12.2.2 理解Cassandra 的数据
- 模型 296
- 12.2.3 将领域对象映射为Cassandra
- 持久化 296
- 12.2.4 编写反应式
- Cassandra repository 301
- 12.3 编写反应式的
- MongoDB repository 304
- 12.3.1 启用Spring Data
- MongoDB 304
- 12.3.2 将领域对象映射为
- 文档 306
- 12.3.3 编写反应式的MongoDB
- repository 接口 309
- 12.4 小结 312
- 第4 部分 云原生Spring
- 第 13 章 注册和发现服务 315
- 13.1 思考微服务 316
- 13.2 搭建服务注册中心 318
- 13.2.1 配置Eureka 321
- 13.2.2 扩展Eureka 324
- 13.3 注册和发现服务 325
- 13.3.1 配置Eureka 客户端
- 属性 326
- 13.3.2 消费服务 328
- 13.4 小结 332
- 第 14 章 管理配置 333
- 14.1 共享配置 334
- 14.2 运行配置服务器 335
- 14.2.1 启用配置服务器 336
- 14.2.2 填充配置仓库 339
- 14.3 消费共享配置 341
- 14.4 提供特定应用和profile 的
- 属性 343
- 14.4.1 提供特定应用的属性 343
- 14.4.2 提供来自profile 的
- 属性 344
- 14.5 保持配置属性的
- 私密性 346
- 14.5.1 在Git 中加密属性 346
- 14.5.2 在Vault 中存储私密
- 信息 349
- 14.6 在运行时刷新配置
- 属性 353
- 14.6.1 手动刷新配置属性 354
- 14.6.2 自动刷新配置属性 356
- 14.7 小结 363
- 第 15 章 处理失败和延迟 365
- 15.1 理解断路器模式 365
- 15.2 声明断路器 367
- 15.2.1 缓解延迟 369
- 15.2.2 管理断路器的阈值 371
- 15.3 监控失败 372
- 15.3.1 Hystrix dashboard
- 简介 373
- 15.3.2 理解Hystrix 的线程
- 模型 375
- 15.4 聚合多个Hystrix 流 377
- 15.5 小结 378
- 第5 部分 部署Spring
- 第 16 章 使用Spring Boot
- Actuator 381
- 16.1 Actuator 概览 382
- 16.1.1 配置Actuator 的基础
- 路径 383
- 16.1.2 启用和禁用Actuator
- 端点 383
- 16.2 消费Actuator 端点 384
- 16.2.1 获取应用的基础信息 385
- 16.2.2 查看配置细节 388
- 16.2.3 查看应用的活动 396
- 16.2.4 获取应用的指标 398
- 16.3 自定义Actuator 401
- 16.3.1 为“/info”端点提供信息 401
- 16.3.2 实现自定义的健康
- 指示器 405
- 16.3.3 注册自定义的指标 407
- 16.3.4 创建自定义的端点 408
- 16.4 保护Actuator 411
- 16.5 小结 413
- 第 17 章 管理Spring 415
- 17.1 使用Spring Boot
- Admin 415
- 17.1.1 创建Admin 服务器 416
- 17.1.2 注册Admin 客户端 418
- 17.2 探索Admin 服务器 421
- 17.2.1 查看应用基本的健康状况
- 和信息 421
- 17.2.2 观察核心指标 423
- 17.2.3 探查环境属性 424
- 17.2.4 查看和设置日志
- 级别 424
- 17.2.5 监控线程 425
- 17.2.6 跟踪HTTP 请求 426
- 17.3 保护Admin 服务器 428
- 17.3.1 为Admin 服务器启用登录
- 功能 428
- 17.3.2 为Actuator 启用认证 429
- 17.4 小结 429
- 第 18 章 使用JMX 监控
- Spring 431
- 18.1 使用Actuator MBean 431
- 18.2 创建自己的MBean 434
- 18.3 发送通知 436
- 18.4 小结 437
- 第 19 章 部署Spring 439
- 19.1 权衡各种部署方案 440
- 19.2 构建和部署WAR
- 文件 441
- 19.3 推送JAR 文件到Cloud
- Foundry 上 443
- 19.4 在Docker 容器中运行
- Spring Boot 445
- 19.5 以终为始 449
- 19.6 小结 449
- 附录 初始化Spring 应用 451
- A.1 使用Spring Tool Suite
- 初始化项目 451
- A.2 使用IntelliJ IDEA 初始化
- 项目 454
- A.3 使用NetBeans 初始化
- 项目 457
- A.4 在start.spring.io 中初始化
- 项目 459
- A.5 使用命令行初始化
- 项目 462
- A.5.1 curl 和Initializr API 462
- A.5.2 Spring Boot 命令行
- 接口 464
- A.6 使用元框架创建Spring
- 应用 465
- A.7 构建和运行项目 465
一本书写到第三版,除了经典书籍估计很少能做到这一点。
本书就像作者说的一样,Spring经过这几年的飞速发展,已经形成了多个Projects,要想在一本书中都涉及的确是不可能的了。Manning就出了如Spring Batch in Action,Spring Roo in Action这样的书籍。
书名改成《spring全家桶实战》可能更恰当些。只是读过,不追求读完,以前总是想着读完一本书,就这辈子不必再看第二遍,但事实证明,这样的想法是不好的。