具体描述
本书是一本经典而实用的畅销Spring 学习指南。 第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 章)拆分单体应用模型,介绍SpringCloud 和微服务开发。第5 部分(第16~19 章)讨论如何为应用投入生产环境做准备以及如何进行部署。 本书既适合刚开始学习Spring Boot 和Spring 框架的Java 开发人员快速上手,也适合经验丰富的Spring 开发人员学习Spring 的新特性,尤其适用于企业级Java 开发人员。
作者简介
克雷格·沃斯(Craig Walls)
Pivotal的首席软件工程师、畅销书作者、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 tui出 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
· · · · · · (收起)
读后感
我就纳闷了 都第六次印刷了 先不说翻译的问题 刚刚翻到36页 就看到了3处 错别字和拼写错误 能不能改正下啊 出版社能不能端正下态度啊 这么好的一本书 就这么让翻译和出版社毁了 真是无语了! 我看过不少人民邮电出版社出的书 都是这样 其实错别字还好 这种代码书就怕后面...
前三章还不错,第四章AOP那部分写的很烂 其他部分继续阅读中 前三章还不错,第四章AOP那部分写的很烂 其他部分继续阅读中 前三章还不错,第四章AOP那部分写的很烂 其他部分继续阅读中
推荐序里面提到了什么骑士之类,但是书中的例子就第一章有骑士,估计写序那人也就读了读第一章就仓促下笔了吧。谁叫大家都很忙呢。 翻译质量因为没看英文原版所以不知道,但是单词拼写错误以及汉字错别字确实在后几章相当严重,印象一下子就掉下来了。
《Spring in Action》是一本关于Spring的最基本介绍的书。这本书的定位就相当于是关于Spring的新华字典,只有一些基本概念的介绍和示例,涵盖了Spring的各个方面,但都不够深入。就像作者在最后一页写的那样:“学习Spring,这才刚刚开始”。 Can't agree more. Spring的博大精...
用户评价
我个人最欣赏的一点是作者对于安全性和部署方面的前瞻性。在现代应用开发中,仅仅保证功能实现是远远不够的,安全和可部署性是决定项目成败的关键。这本书在安全章节中,对OAuth 2.0和JWT的集成讲解得尤为细致,尤其是在微服务网关层面如何实现统一的身份验证和授权,提供了非常实用的配置范例。更值得称赞的是,它没有止步于本地开发环境,而是花费了大量篇幅讨论如何将Spring Boot应用打包成可执行JAR,并成功部署到Docker容器中,随后再结合Kubernetes进行编排。这种端到端的覆盖,从代码编写到容器化部署的全过程指导,体现了作者对当前软件交付实践的深刻理解。它提供了一个完整的“Spring全景图”,让你在学习框架本身的同时,也掌握了构建云原生应用所需的周边技能栈,极大地拓宽了读者的视野和实战能力。
说实话,市面上关于Spring的书籍汗牛充栋,但很多都停留在“能跑起来”的层面,缺乏对“为何如此”的深入剖析。然而,这本《Spring实战(第5版)》的价值恰恰在于其深度的穿透力。它没有回避Spring核心设计哲学中的复杂性,比如AOP的横切关注点是如何在运行时动态织入业务逻辑的,或者Spring Cloud组件之间是如何通过服务发现和配置中心协同工作的。作者的文笔非常老练且富有洞察力,总能在关键技术节点提供一个清晰的宏观视角,让你明白这些技术是如何共同构建起一个松耦合、高内聚的系统的。阅读过程中,我多次停下来思考作者提出的设计权衡——例如,何时应该选择同步通信,何时又该转向异步消息队列。这种引导性的思考过程,远比死记硬背API调用要宝贵得多,它真正提升了我的架构设计能力,而不是仅仅培养了一个“API调用工程师”。这本书的实操性与理论深度达到了一个近乎完美的平衡点。
自从引入Spring Boot以来,开发效率确实提升了一大截,但随之而来的“魔法”也让人有些不安——很多配置都隐藏在了自动装配背后。对于我这种有“刨根问底”癖好的程序员来说,这种不透明性是难以忍受的。庆幸的是,这本书用近乎苛刻的篇幅,把这些“魔法”的实现机制一一揭开。特别是关于自动配置类的查找路径、条件化装配注解(如`@ConditionalOnMissingBean`)的工作原理,都被讲解得淋漓尽致。读完这部分内容后,我再去看那些自定义Starter的编写逻辑时,感觉豁然开朗,仿佛拿到了修改框架底层行为的钥匙。此外,书中对Actuator的介绍也十分到位,它不仅仅是展示了如何监控应用的健康状态,更深入探讨了如何自定义暴露监控指标,这对于理解生产环境下的故障排查和性能调优至关重要。它教会你如何不被框架牵着鼻子走,而是成为框架的主人。
这本书的排版和内容组织简直是为自学者量身定制的。每一章的结构都极其清晰,通常以一个实际问题引入,然后层层递进地给出解决方案,最后往往会有一个“进阶提示”或“最佳实践”的小结。这种结构保证了阅读体验的流畅性,即使面对像WebFlux响应式编程这样全新的范式,它也能通过构建清晰的对比场景,帮助读者理解其与传统Servlet模型的根本差异。我发现,作者在选取示例项目时也颇有深意,它们并非是那些脱离实际的“Hello World”,而是贴近企业级应用中常见的用户管理、数据持久化、安全认证等场景。这种高度的相关性使得学习到的知识可以无缝迁移到我的日常工作中去,几乎没有“学习曲线上的断崖”。对于那些希望系统性地从传统Spring MVC迁移到现代化Spring生态的团队而言,这本书提供的路线图是明确且可靠的。
刚入手这本厚厚的《Spring实战(第5版)》,迫不及待地翻开,就被其中对现代Java开发生态的全面梳理给镇住了。这本书不仅仅是简单地罗列Spring框架的各个模块,更像是一部精心编排的武林秘籍,手把手教你如何驾驭Spring Boot这柄神兵利器。我尤其欣赏作者在讲解核心概念时所采用的循序渐进的叙事方式,从最基础的依赖注入(DI)讲到声明式事务管理,每一步都配有清晰的代码示例和详尽的解释,让人感觉每掌握一个知识点,功力都深厚了一截。对于像我这样,虽然对Java耳熟能详,但在转向微服务和云原生架构时略感迷茫的开发者来说,这本书无疑是定海神针。它没有陷入过多冗长、晦涩的理论探讨,而是紧紧围绕“实战”二字,确保你读完后能立即上手构建健壮、可维护的生产级应用。那关于数据访问层的讲解,特别是如何优雅地结合JPA和Spring Data,简直是教科书级别的示范,省去了我大量查阅官方文档的时间。
尤其是刚接触spring框架的时候,只要跟着书本一步步走,就会发现全是坑。后面才定义的东西在前面使用。第三章H2数据库引入但没有说需要database配置path。。。。。。
尤其是刚接触spring框架的时候,只要跟着书本一步步走,就会发现全是坑。后面才定义的东西在前面使用。第三章H2数据库引入但没有说需要database配置path。。。。。。
多年以后读,可能没有当年的无知吧,入门级的书,以后有啥改变,期待太多。。所以适合入门spring吧
简单的阐述了spring的用法,并没有深入实践。可以入门使用。进阶的还需要个人努力实践。
对于代码中的各项细节均有详实说明,行文没有译文感,是本入门级好书,可以一看。