读过第4版,已经捐出去了。
第 1 部分 Spring 基础
第 1 章 Spring 起步 3
1.1 什么是Spring 4
1.2 初始化Spring 应用 6
1.2.1 使用Spring Tool Suite
那就是在基于Eclipse的基础上,spring提供了针对Spring开发的Spring Tool Suite集成开发工具,通过该工具,可以很轻易地生成一个spring的工程,比如web工程,最令人兴奋的是工程里的配置文件都会自动为你生成,你再也不用操心配置文件的格式及各种配置文件了。
Spring Tool Suite的官方下载地址是:
http://www.springsource.org/downloads/sts-ggts
Spring | Tools
(当前最新版本是 4.11.0 ,2021-8-10)
初始化 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
get
@GetMapping
6.1.2 发送数据到服务器端 140
post
6.1.3 在服务器上更新数据 142
put
path
6.1.4 删除服务器上的数据 144
delete
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
JMS 消息使用目的地名称来寻址。
8.1.1 搭建 JMS 环境 174
8.1.2 使用JmsTemplate 发送消息 176
8.1.3 接收JMS 消息 183
8.2 使用RabbitMQ 和 AMQP 186
RabbitMQ 是 AMQP 高级实现。提供了比 JMS 更高级的消息路由策略。
AMQP 消息使用 Exchange 和 routing key 来寻址。消息与接收者要监听的队列解耦了。
8.2.1 添加 RabbitMQ 到 Spring 中 188
编写,添加 pom.xml
spring-boot-starter-amqp
一个 AMQP 连接工厂和 RabbitTemplate bean。
配置文件
*.yaml
8.2.2 通过 RabbitTemplate 发送消息 189
send() // 发送原始的消息
convertAndSend() // 发送根据对象转换而成的消息
8.2.3 接收来自 RabbitMQ 的消息 192
接收消息
receive()
接收由消息转换而成的对象
receiveAndConvert()
接收由消息转换而成的类型安全的对象
receiveAndConvert()
8.3 使用 Kafka 的消息 196
8.3.1 为 Spring 搭建支持 Kafka 消息的环境 197
8.3.2 通过 Kafka Template 发送消息 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
官网给出的解释是,spring-integration 是一个功能强大的 EIP (Enterprise Integration Patterns),即企业集成模式。对,spring-integration 是一个集大成者。就我自己的理解,集成了众多功能的它,是一种便捷的事件驱动消息框架用来在系统之间做消息传递的。
spring-integration 的目标
-
提供一个简单的模型来实现复杂的企业集成解决方案
-
为基于spring的应用添加异步的、消息驱动的行为
spring-integration 的原则
-
组件之间应该是松散的,模块性的易测的
-
应用框架应该强迫分离业务逻辑和集成逻辑
-
扩展节点应该有更好的抽象和可以再使用的能力
参考
spring-integration初探_Doubletree.lin的博客-CSDN博客
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
Reactor的类型
Reactor有两种类型,Flux
Mono最多只触发一个事件,它跟RxJava的Single和Maybe类似,所以可以把Mono
因为这两种类型之间的简单区别,我们可以很容易地区分响应式API的类型:从返回的类型我们就可以知道一个方法会“发射并忘记”或“请求并等待”(Mono),还是在处理一个包含多个数据项的流(Flux)。
Flux和Mono的一些操作利用了这个特点在这两种类型间互相转换。例如,调用Flux
Reactor设计的原则之一是要保持API的精简,而对这两种响应式类型的分离,是表现力与API易用性之间的折中。
10.2.1 绘制反应式流图 238
一般使用弹珠图( marble diagram )表示。
10.2.2 添加 Reactor 依赖 239
pom.xml
10.3 使用常见的反应式操作 240
创建,组合,转换,逻辑操作。
500多个操作
10.3.1 创建反应式类型 240
根据对象创建
根据集合创建
生成 Flux 的数据
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
写的给我感觉并不细至,好多地方给不熟悉的人,如我看着断断续续的。好多编程书如此。
试着写个例子 http api web 示例 hello world访问网址:http://localhost:8081/hello
终端下会打印:Hello world!
主要修改几处:
1,配置文件,D:katuWorkmycodetur01pom.xml
2,配置文件:D:katuWorkmycodetur01srcmainresourcesapplication.properties
加入端口号
server.port=8081
3,程序入口类
package com.example.tur01; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; import org.springframework.boot.web.embedded.tomcat.TomcatServletWebServerFactory; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; @RestController @SpringBootApplication public class Tur01Application { public static void main(String[] args) { SpringApplication.run(Tur01Application.class, args); } @RequestMapping("hello") void helloworld() { System.out.println("Hello world!"); } public TomcatServletWebServerFactory servletContainer() { return new TomcatServletWebServerFactory(8081); } }



