EST27
3.3API,HTTP动词风格27
3.3.1回到Initializr28
3.3.2创建一个简单的域30
3.4GET31
3.4.1@RestController概述31
3.4.2POST35
3.4.3PUT35
3.4.4DELETE36
3.4.5其他36
3.4.6信任,但要验证38
3.5总结41
●第4章向SpringBoot应用程序添加数据库访问42
4.1启动数据库访问的自动配置42
4.2我们希望得到什么43
4.2.1添加数据库依赖项43
4.2.2添加代码44
4.3保存和检索数据50
4.4稍加打磨53
4.5总结55
●第5章配置和检查SpringBoot应用程序56
5.1应用程序配置57
5.1.1@Value58
5.1.2@ConfigurationProperties62
5.1.3潜在的第三方选择66
5.2自动配置报告68
5.3Actuator70
5.3.1开启Actuator75
5.3.2使用Actuator提高环境适应能力77
5.3.3使用Actuator将日志量调大78
5.4总结79
●第6章真正深入地研究数据81
6.1定义实体81
6.2模板支持82
6.3存储库支持82
6.4@Before83
6.5使用Redis创建基于模板的服务83
6.5.1初始化项目84
6.5.2开发Redis服务84
6.6从模板转换到存储库92
6.7使用JPA创建基于存储库的服务95
6.7.1初始化项目95
6.7.2开发JPA(MySQL)服务96
6.7.3加载数据100
6.8使用NoSQL文档数据库创建基于存储库的服务104
6.8.1初始化项目104
6.8.2开发MongoDB服务106
6.9使用NoSQL图形数据库创建基于存储库的服务111
6.9.1初始化项目111
6.9.2开发Neo4j服务112
6.10总结120
●第7章使用SpringMVC创建应用程序122
7.1SpringMVC是什么122
7.2使用模板引擎的终端用户交互123
7.2.1初始化项目123
7.2.2开发AircraftPositions应用程序124
7.3传递消息130
7.3.1启动PlaneFinder131
7.3.2扩展AircraftPositions应用程序134
7.4使用WebSocket创建对话138
7.4.1什么是WebSocket138
7.4.2重构AircraftPositions应用程序139
7.5总结145
●第8章使用ProjectReactor和SpringWebFlux进行响应式编程146
8.1响应式编程简介146
8.2ProjectReactor149
8.3Tomcat与Netty151
8.4响应式数据访问151
8.5响应式Thymeleaf162
8.6用于全响应式进程间通信的RSocket163
8.6.1什么是RSocket163
8.6.2使RSocket工作164
8.7总结168
●第9章为日益增加的生产就绪要求测试SpringBoot应用程序169
9.1单元测试169
9.2@SpringBootTest介绍170
9.2.1AircraftPositions应用程序重要的单元测试171
9.2.2重构以更好地测试175
9.3测试片181
9.4总结187
●第10章保护SpringBoot应用程序188
10.1认证和授权188
10.1.1认证189
10.1.2授权190
10.2SpringSecurity概述190
10.2.1HTTP防火墙190
10.2.2安全过滤器链191
10.2.3请求和响应报头191
10.3使用SpringSecurity实现基于表单的认证和授权191
10.3.1添加SpringSecurity依赖项192
10.3.2添加认证197
10.3.3授权203
10.4对认证和授权实现OpenIDConnect和OAuth2210
10.4.1AircraftPositions客户端应用程序212
10.4.2PlaneFinder资源服务器218
10.5总结225
●第11章部署SpringBoot应用程序226
11.1重温SpringBoot可执行JAR226
11.1.1构建一个“完全可执行的”SpringBootJAR227
11.1.2这是什么意思232
11.2扩展JAR233
11.3将SpringBoot应用程序部署到容器中238
11.3.1从IDE创建容器镜像239
11.3.2从命令行创建容器镜像241
11.3.3验证镜像是否存在242
11.3.4运行容器化应用程序243
11.4用于检查SpringBoot应用程序容器镜像的实用程序244
11.4.1pack244
11.4.2dive246
11.5总结246
●第12章深入探讨响应式编程247
12.1什么时候进行响应式编程247
12.2测试响应式应用程序248
12.2.1首先,进行重构249
12.2.2现在,进行测试255
12.3诊断和调试响应式应用程序262
12.3.1Hooks.onOperatorDebug()263
12.3.2检查点272
12.3.3ReactorDebugAgent.init()274
12.4总结276