图书目录

第1章  设置场景 1

1.1  读者对象 2

1.2  本书与其他书籍和指南的

区别 2

1.2.1  学习:一个增量过程 2

1.2.2  本书是指南还是图书 3

1.3  从基础到高级主题 3

1.3.1  以Spring Boot为框架是

更专业的方式 4

1.3.2  测试驱动的开发 4

1.3.3  微服务 4

1.3.4  由事件驱动的系统 5

1.3.5  非功能性需求 5

1.4  在线内容 5

1.5  本章小结 5

第2章  基本概念 7

2.1  Spring 7

2.2  Spring Boot 8

2.3  Lombok和Java 9

2.4  测试的基础知识 11

2.4.1  测试驱动的开发 12

2.4.2  行为驱动的开发 12

2.4.3  JUnit 13

2.4.4  Mockito 13

2.4.5  AssertJ 16

2.4.6  在Spring Boot中进行测试 16

2.5  日志记录 17

2.6  本章小结 18

第3章  一个基础的Spring Boot

应用程序 20

3.1  搭建开发环境 21

3.2  Web应用的框架 21

3.3  Spring Boot自动配置 24

3.4  三层架构 28

3.5  域建模 30

3.5.1  域定义和域驱动设计 30

3.5.2  域类 31

3.6  业务逻辑 33

3.6.1  功能 33

3.6.2  随机的Challenge 33

3.6.3  验证Attempt 37

3.7  表示层 40

3.7.1  REST 40

3.7.2  Spring Boot和REST API 41

3.7.3  设计API 42

3.7.4  第一个控制器 43

3.7.5  自动序列化的工作方式 44

3.7.6  使用Spring Boot测试控制器 47

3.8  本章小结 56

第4章  用React构建微前端 58

4.1  快速了解React和Node 59

4.2  搭建开发环境 59

4.3  React框架 60

4.4  JavaScript客户端 61

4.5  Challenge组件 63

4.5.1  组件的主要结构 65

4.5.2  渲染 67

4.5.3  与应用程序集成 69

4.6  第一次运行前端 69

4.7  调试 70

4.8  将CORS配置添加到

Spring Boot应用 71

4.9  使用应用程序 72

4.10  部署React 应用程序 73

4.11  本章小结 75

第5章  数据层 77

5.1  数据模型 78

5.2  选择数据库 80

5.2.1  SQL与NoSQL 80

5.2.2  H2、Hibernate和JPA 81

5.3  Spring Boot Data JPA 81

5.3.1  依赖关系和自动配置 81

5.3.2  Spring Boot Data JPA技术栈 84

5.3.3  数据源(自动)配置 85

5.4  实体 86

5.5  存储库 90

5.6  存储用户和尝试 92

5.7  显示最近的尝试 96

5.7.1  服务层 97

5.7.2  控制器层 98

5.7.3  用户界面 102

5.8  体验新功能 107

5.9  本章小结 109

第6章  从微服务开始 110

6.1  小型单体系统 110

6.2  为什么选择小型单体

系统 110

6.2.1  微服务与生俱来的问题 111

6.2.2  小型单体系统适用于小团队 111

6.2.3  拥抱重构 112

6.3  规划未来拆分的小型单体

应用程序 112

6.4  新需求和游戏化 113

6.5  转向微服务 115

6.5.1  独立的工作流程 116

6.5.2  水平可伸缩性 116

6.5.3  细粒度的非功能需求 117

6.5.4  其他优势 118

6.5.5  劣势 118

6.6  架构概述 119

6.7  设计和实现新服务 121

6.7.1  界面 121

6.7.2  Gamification的Spring Boot

框架 121

6.7.3  域 122

6.7.4  服务 126

6.7.5  数据 135

6.7.6  控制器 137

6.7.7  配置 138

6.7.8  微服务Multiplication的

变动 140

6.7.9  用户界面 144

6.8  玩转系统 149

6.9  容错能力 150

6.10  未来的挑战 151

6.10.1  紧密耦合 152

6.10.2  同步接口与最终一致性 152

6.10.3  事务 156

6.10.4  公开API 157

6.11  本章小结 157

第7章  事件驱动的架构 159

7.1  核心概念 159

7.1.1  消息代理 159

7.1.2  事件和消息 161

7.1.3  探讨事件 162

7.1.4  异步消息传递 164

7.1.5  反应式系统 166

7.2  事件驱动的利弊 167

7.3  消息传递模式 168

7.3.1  发布-订阅 169

7.3.2  工作队列 169

7.3.3  过滤器 170

7.3.4  数据持久性 170

7.4  消息传递代理协议、标准

和工具 170

7.5  AMQP和RabbitMQ 171

7.5.1  总体描述 171

7.5.2  交换类型和路由 172

7.5.3  消息确认和拒绝 174

7.6  设置RabbitMQ 174

7.7  Spring AMQP和

Spring Boot 176

7.8  解决方案设计 176

7.8.1  添加AMQP启动程序 178

7.8.2  Multiplication中的事件发布 179

7.8.3  Gamification作为订阅者 184

7.9  场景分析 191

7.9.1  快乐流 191

7.9.2  Gamification变得不可用 196

7.9.3  消息代理变得不可用 198

7.9.4  事务性 199

7.9.5  扩展微服务 201

7.10  本章小结 205

第8章  微服务架构中的常见

模式 207

8.1  网关 207

8.1.1  Spring Cloud网关 209

8.1.2  网关微服务 211

8.1.3  其他项目的变更 214

8.1.4  运行Gateway微服务 216

8.1.5  下一步 217

8.2  运行状况 217

8.2.1  Spring Boot Actuator 218

8.2.2  在微服务中包含Actuator 220

8.3  服务发现和负载均衡 222

8.3.1  Consul 226

8.3.2  Spring Cloud Consul 227

8.3.3  Spring Cloud负载均衡器 233

8.3.4  网关中的服务发现和

负载均衡 235

8.3.5  使用服务发现和负载均衡 239

8.4  每种环境的配置 245

8.4.1  Consul中的配置 247

8.4.2  Spring Cloud Consul Config 248

8.4.3  实现集中配置 250

8.4.4  集中配置实践 253

8.5  集中式日志 259

8.5.1  日志聚合模式 259

8.5.2  日志集中化的简单解决方案 260

8.5.3  使用日志并输出 264

8.6  分布式跟踪 268

8.6.1  Spring Cloud Sleuth 269

8.6.2  实现分布式跟踪 270

8.7  容器化 272

8.7.1  Docker 274

8.7.2  Spring Boot和Buildpacks 277

8.7.3  在Docker中运行系统 278

8.7.4  Docker化微服务 279

8.7.5  Docker化UI 280

8.7.6  Docker化配置导入器 280

8.7.7  Docker Compose 282

8.7.8  使用Docker扩展系统 293

8.7.9  共享Docker映像 295

8.8  平台和云原生微服务 298

8.8.1  容器平台 299

8.8.2  应用程序平台 300

8.8.3  云提供商 300

8.8.4  做出决定 301

8.8.5  云原生微服务 302

8.9  本章小结 302

后记 304