本书是一本经典而实用的Spring学习指南,介绍了Spring使用框架、Spring Boot,以及Spring系统中的其他组成部分。 本书分为4个部分,共18章。第1部分(第1章~第6章)涵盖了构建Spring应用的基础知识。第2部分(第7章~第10章)讨论了如何讲Spring应用与其他应用进行集成。第3部分(第11章~第14章)探讨了Spring对反应式编程提供的全新支持。第4部分(第15章~第18章)介绍了如何做好应用投入生产环境前的准备工作,以及如何进行部署。 本书适合刚刚开始学习Spring Boot和Spring框架的Java开发人员阅读,也适合想要超越基础知识并学习Spring新特性的经验丰富的Spring开发者参考。
......(更多)
Craig Walls是Pivotal的高级工程师。他是Spring框架的热心推动者,经常在本地用户组和会议上发言,撰写关于Spring的文章。在不琢磨代码的时候,Craig经常计划去迪斯尼世界或迪斯尼乐园的下一次旅行,他希望尽可能多地陪伴他的妻子、两个女儿和宠物。
......(更多)
第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项目的结构 9
1.3 编写Spring应用 15
1.3.1 处理Web请求 16
1.3.2 定义视图 17
1.3.3 测试控制器 18
1.3.4 构建和运行应用 19
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 24
1.4.3 Spring Data 25
1.4.4 Spring Security 25
1.4.5 Spring Integration和
Spring Batch 25
1.4.6 Spring Cloud 26
1.4.7 Spring Native 26
1.5 小结 26
第2章 开发Web应用 27
2.1 展现信息 28
2.1.1 构建领域类 29
2.1.2 创建控制器类 32
2.1.3 设计视图 36
2.2 处理表单提交 39
2.3 校验表单输入 46
2.3.1 声明校验规则 47
2.3.2 在表单绑定的时候执行校验 49
2.3.3 展现校验错误 50
2.4 使用视图控制器 51
2.5 选择视图模板库 53
2.5.1 缓存模板 55
2.6 小结 55
第3章 使用数据 57
3.1 使用JDBC读取和写入数据 57
3.1.1 调整领域对象以适应持久化 59
3.1.2 使用JdbcTemplate 60
3.1.3 定义模式和预加载数据 66
3.1.4 插入数据 68
3.2 使用Spring Data JDBC 73
3.2.1 添加Spring Data JDBC到构建文件中 74
3.2.2 定义存储库接口 74
3.2.3 为领域类添加持久化的注解 76
3.2.4 使用CommandLineRunner预加载数据 78
3.3 使用Spring Data JPA持久化数据 80
3.3.1 添加Spring Data JPA到项目中 80
3.3.2 将领域对象标注为实体 81
3.3.3 声明JPA存储库 84
3.3.4 自定义JPA存储库 85
小结 88
第4章 使用非关系型数据 89
4.1 使用Cassandra存储库 90
4.1.1 启用Spring Data Cassandra 90
4.1.2 理解Cassandra数据模型 93
4.1.3 为Cassandra持久化映射领域类型 93
4.1.4 编写Cassandra存储库 99
4.2 编写MongoDB存储库 100
4.2.1 启用Spring Data MongoDB 101
4.2.2 将领域类型映射为文档 102
4.2.3 编写MongoDB存储库接口 105
小结 106
第5章 保护Spring 107
5.1 启用Spring Security 107
5.2 配置Spring Security 110
5.2.1 基于内存的用户详情服务 111
5.2.2 自定义用户认证 112
5.3 保护Web请求 118
5.3.1 保护请求 118
5.3.2 创建自定义的登录页 121
5.3.3 启用第三方认证 123
5.3.4 防止跨站请求伪造 126
5.4 实现方法级别的安全 127
5.5 了解用户是谁 129
小结 132
第6章 使用配置属性 133
6.1 细粒度地调整自动配置 134
6.1.1 理解Spring的环境抽象 134
6.1.2 配置数据源 136
6.1.3 配置嵌入式服务器 137
6.1.4 配置日志 138
6.1.5 使用特定的属性值 140
6.2 创建自己的配置属性 140
6.2.1 定义配置属性的持有者 143
6.2.2 声明配置属性元数据 145
6.3 使用profile进行配置 147
6.3.1 定义特定profile的属性 147
6.3.2 激活profile 149
6.3.3 使用profile条件化地创建bean 150
小结 151
第2部分 Spring集成
第7章 创建REST服务 155
7.1 编写RESTful控制器 156
7.1.1 从服务器中检索数据 156
7.1.2 发送数据到服务器端 162
7.1.3 在服务器上更新数据 163
7.1.4 删除服务器上的数据 165
7.2 启用数据后端服务 165
7.2.1 调整资源路径和关系名称 168
7.2.2 分页和排序 170
7.3 消费REST服务 171
7.3.1 GET资源 173
7.3.2 PUT资源 174
7.3.3 DELETE资源 174
7.3.4 POST资源 175
小结 176
第8章 保护REST 177
8.1 OAuth 2简介 178
8.2 创建授权服务器 183
8.3 使用资源服务器保护API 190
8.4 开发客户端 193
小结 198
第9章 发送异步消息 199
9.1 使用JMS发送消息 200
9.1.1 搭建JMS环境 200
9.1.2 使用JmsTemplate发送消息 202
9.1.3 接收JMS消息 210
9.2 使用RabbitMQ和
AMQP 214
9.2.1 添加RabbitMQ到Spring中 215
9.2.2 通过RabbitTemplate发送消息 216
9.2.3 接收来自RabbitMQ的消息 220
9.3 使用Kafka的消息 224
9.3.1 为Spring搭建支持Kafka消息的环境 224
9.3.2 通过KafkaTemplate发送消息 226
9.3.3 编写Kafka监听器 228
小结 229
第10章 Spring集成 231
10.1 声明一个简单的集成流 232
10.1.1 使用XML定义集成流 233
10.1.2 使用Java配置集成流 235
10.1.3 使用Spring Integration的DSL配置 237
10.2 Spring Integration功能概览 238
10.2.1 消息通道 239
10.2.2 过滤器 240
10.2.3 转换器 241
10.2.4 路由器 243
10.2.5 切分器 244
10.2.6 服务激活器 247
10.2.7 网关 249
10.2.8 通道适配器 250
10.2.9 端点模块 252
10.3 创建电子邮件集成流 253
小结 261
第3部分 反应式Spring
第11章 理解反应式编程 265
11.1 反应式编程概览 266
11.1.1 定义反应式流 267
11.2 初识Reactor 269
11.2.1 绘制反应式流图 270
11.2.2 添加Reactor依赖 271
11.3 使用常见的反应式操作 272
11.3.1 创建反应式类型 272
11.3.2 组合反应式类型 276
11.3.3 转换和过滤反应式流 280
11.3.4 在反应式类型上执行逻辑操作 290
小结 292
第12章 开发反应式API 293
12.1 使用Spring WebFlux 293
12.1.1 Spring WebFlux简介 294
12.1.2 编写反应式控制器 296
12.2 定义函数式请求处理器 300
12.3 测试反应式控制器 304
12.3.1 测试GET请求 304
12.3.2 测试POST请求 307
12.3.3 使用实时服务器进行测试 308
12.4 反应式消费REST API 309
12.4.1 获取资源 310
12.4.2 发送资源 312
12.4.3 删除资源 313
12.4.4 处理错误 313
12.4.5 交换请求 315
12.5 保护反应式Web API 316
12.5.1 配置反应式Web应用的安全性 317
12.5.2 配置反应式的用户详情服务 318
12.6 小结 320
第13章 反应式持久化数 321
13.1 使用R2DBC 321
13.1.1 为R2DBC定义领域实体 322
13.1.2 定义反应式存储库 326
13.1.3 测试R2DBC存储库 328
13.1.4 定义OrderRepository的聚合根服务 330
13.2 反应式地持久化MongoDB文档数据 336
13.2.1 定义领域文档类型 337
13.2.2 定义反应式MongoDB存储库 340
13.2.3 测试反应式MongoDB存储库 340
13.3 反应式地持久化Cassandra数据 344
13.3.1 定义使用Cassandra持久化的领域类 344
13.3.2 创建反应式Cassandra存储库 348
13.3.3 测试反应式Cassandra存储库 349
小结 351
第14章 使用RSocket 353
14.1 RSocket概览 354
14.2 创建简单的RSocket服务器和客户端 355
14.2.1 使用请求-响应通信模型 356
14.2.2 处理请求-流的消息 359
14.2.3 发送即发即忘的消息 361
14.2.4 双向发送消息 363
14.3 通过WebSocket传输RSocket 366
小结 367
第4部分 部署Spring
第15章 使用Spring Boot Actuator 371
15.1 Actuator概览 371
15.1.1 配置Actuator的基础路径 373
15.1.2 启用和禁用Actuator端点 373
15.2 消费Actuator端点 374
15.2.1 获取应用的基础信息 375
15.2.2 查看配置细节 378
15.2.3 查看应用的活动 386
15.2.4 挖掘应用运行时的指标 388
15.3 自定义Actuator 391
15.3.1 为“/info”端点提供息 391
15.3.2 实现自定义的健康指示器 396
15.3.3 注册自定义的指标 398
15.3.4 创建自定义的端点 399
15.4 确保Actuator的安全 402
小结 404
第16章 管理Spring 405
16.1 使用Spring Boot
Admin 405
16.1.1 创建Admin服务器 406
16.1.2 注册Admin客户端 407
16.2 探索Admin服务器 409
16.2.1 查看应用基本的健康状况和信息 409
16.2.2 观察核心指标 410
16.2.3 探查环境属性 410
16.2.4 查看和设置日志级别 411
16.3 保护Admin服务器 412
16.3.1 为Admin服务器启用登录功能 412
16.3.2 为Actuator启用认证 413
小结 414
第17章 使用JMX监控Spring 415
17.1 使用Actuator MBean 415
17.2 创建自己的MBean 418
17.3 发送通知 419
17.4 小结 421
第18章 部署Spring 423
18.1 权衡各种部署方案 424
18.2 构建可执行JAR文件 425
18.3 构建容器镜像 426
18.3.1 部署至Kubernetes 428
18.3.2 启用优雅关机功能 430
18.3.3 处理应用程序的存活和就绪状态 431
18.4 构建和部署WAR文件 434
18.5 以终为始 436
18.6 小结 436
附录 初始化Spring应用 437
A.1 使用Spring Tool Suite初始化项目 437
A.2 使用IntelliJ IDEA初始化项目 440
A.3 使用NetBeans初始化项目 441
A.4 在start.spring.io中初始化项目 445
A.5 使用命令行初始化项目 447
A.5.1 curl和Initializr API 448
A.5.2 Spring Boot命令行接口 449
A.6 构建和运行项目 450
......(更多)
It all started with a bean.
On the other hand, completely uncoupled code doesn't do anything.
......(更多)