第 1部分
第 1章 启动Spring Boot 3
1.1 Spring Boot介绍 3
1.1.1 为什么选择Spring Boot 3
1.1.2 什么是Spring Boot 4
1.1.3 Spring Boot的核心特性 5
1.1.4 Spring Boot组件 6
1.2 代码示例 8
1.2.1 Maven与Gradle 8
1.2.2 Java与Kotlin 8
1.2.3 数据库支持 8
1.2.4 Lombok 8
1.3 Spring Boot入门 9
1.3.1 第 一个Spring Boot项目 9
1.3.2 Spring Boot项目的结构 9
1.3.3 创建可执行的JAR文件 17
1.3.4 探索JAR文件 18
1.3.5 关闭Spring Boot应用程序 18
1.4 Spring Boot的附加概念 19
1.4.1 Spring Boot的启动事件 19
1.4.2 监听Spring Boot应用程序中的事件 20
1.4.3 自定义Spring Boot启动器 22
1.4.4 自定义自动配置 22
1.4.5 故障分析器 22
1.4.6 Spring Boot执行器 23
1.4.7 Spring Boot开发人员
工具 24
小结 24
第 2部分
第 2章 常见的Spring Boot任务 27
2.1 管理配置 27
2.1.1 使用SpringApplication类 28
2.1.2 使用@PropertySource 28
2.1.3 配置数据文件 30
2.1.4 操作系统环境变量 33
2.2 使用@ConfigurationProperties创建自定义属性 34
2.2.1 技巧:在Spring Boot应用程序中使用@ConfigurationProperties来自定义属性 35
2.3 在Spring Boot应用程序启动时执行代码 40
2.3.1 技巧:使用CommandLineRunner在Spring Boot应用程序启动时执行代码 40
2.4 在Spring Boot应用程序中自定义日志 44
2.4.1 技巧:了解和自定义Spring Boot应用程序中的默认日志记录 45
2.4.2 技巧:在Spring Boot应用程序中使用Log4j2配置日志 48
2.5 使用Bean Validation验证用户数据 52
2.5.1 技巧:使用内置的Bean Validation注解来验证Spring Boot应用程序中的业务实体 52
2.5.2 技巧:定义和使用自定义的Bean Validation注解来验证Spring Boot应用程序中的POJO 55
小结 60
第3章 使用Spring Data访问数据库 61
3.1 Spring Data介绍 61
3.1.1 为什么选择Spring Data 62
3.1.2 Spring Data模块 63
3.2 在Spring Boot应用程序中配置数据库 64
3.2.1 技巧:在Spring Boot应用程序中配置关系数据库 64
3.2.2 技巧:在Spring Boot应用程序中配置MongoDB数据库 68
3.2.3 技巧:在Spring Boot应用程序中初始化关系数据库模式 71
3.3 了解CrudRepository接口 75
3.3.1 技巧:使用Spring Data JPA管理关系数据库中的域对象 76
3.3.2 技巧:使用Spring Data JPA自定义Spring Data存储库来管理关系数据库中的域对象 81
3.4 使用Spring Data从数据库中检索数据 83
3.4.1 定义查询方法 83
3.4.2 技巧:在Spring Data JPA中自定义查询方法来从关系数据库中检索域对象 84
3.4.3 使用PagingAndSortingRepository实现分页 87
3.4.4 技巧:使用PagingAndSortingRepository接口对数据进行分页和排序 87
3.4.5 使用@NamedQuery指定查询 90
3.4.6 技巧:在Spring Data JPA中使用命名查询来管理关系数据库中的域对象 90
3.5 使用@Query指定查询 92
3.5.1 技巧:在Spring Data JPA中使用@Query注解从关系数据库中查询域对象 93
3.6 在Spring Data JPA中使用Criteria API 96
3.6.1 技巧:在Spring Data JPA中使用Criteria API来管理关系数据库中的域对象 96
3.7 在Spring Data JPA中使用QueryDSL 98
3.7.1 技巧:在Spring Data JPA中使用QueryDSL来管理关系数据库中的域对象 99
3.8 管理域对象关系 103
3.8.1 技巧:使用Spring Data JPA在关系数据库中管理具有多对多关系的域对象 105
小结 113
第4章 Spring Boot自动配置和执行器 114
4.1 了解Spring Boot自动配置 114
4.1.1 理解@Conditional注解 116
4.1.2 深入了解Spring Boot自动配置 118
4.2 使用Spring Boot DevTools 121
4.2.1 属性默认值 121
4.2.2 自动重启 121
4.2.3 实时重新加载 122
4.3 创建自定义故障分析器 122
4.3.1 技巧:自定义Spring Boot故障分析器 122
4.4 Spring Boot Actuator 126
4.4.1 技巧:在Spring Boot应用程序中配置Spring Boot Actuator 126
4.4.2 了解Spring Boot Actuator端点 127
4.4.3 管理Spring Boot Actuator端点 129
4.4.4 health端点深度剖析 131
4.4.5 自定义Spring Boot HealthIndicator 134
4.4.6 技巧:自定义Spring Boot执行器HealthIndicator 134
4.5 info端点深度剖析 137
4.5.1 技巧:配置Spring Boot Actuator info端点 137
4.5.2 技巧:配置自定义的InfoContributor来为Spring Boot Actuator端点提供自定义的应用程序信息 141
4.6 自定义Spring Boot Actuator端点 142
4.6.1 技巧:自定义Spring Boot Actuator端点 143
4.6.2 Spring Boot Actuator指标 148
4.6.3 自定义指标 151
4.6.4 使用Prometheus和Grafana的指标仪表板 156
小结 158
第5章 Spring Boot应用程序安全 159
5.1 Spring Security介绍 159
5.2 在Spring Boot应用程序中使用Spring Security 161
5.2.1 技巧:在Spring Boot应用程序中使用Spring Security保护应用程序安全 161
5.2.2 Filter、FilterChain和Spring Security 165
5.2.3 Spring Security架构 167
5.2.4 用户认证 169
5.2.5 Spring Security自动配置 172
5.3 使用Spring Security 174
5.3.1 技巧:在Spring Boot应用程序中自定义Spring Security登录页面 174
5.3.2 技巧:在Spring Boot应用程序中使用Spring Security进行内存用户认证 179
5.3.3 技巧:在Spring Boot应用程序中使用Spring Security配置JDBC用户认证 185
5.3.4 技巧:在Spring Boot应用程序中使用自定义的UserDetailsService执行JDBC用户认证 189
5.3.5 技巧:在Spring Boot应用程序中实现LDAP用户认证 194
5.3.6 技巧:在Spring Boot应用程序中实现HTTP基本认证 199
小结 202
第6章 Spring Security高级安全功能 203
6.1 在Spring Boot应用程序中启用HTTPS 204
6.1.1 技巧:在Spring Boot应用程序中启用HTTPS 204
6.2 使用Spring Cloud Vault保护密钥 208
6.2.1 技巧:在Spring Boot应用程序中使用HashiCorp Vault管理密钥 208
6.3 实现用户注册 211
6.3.1 技巧:在Spring Boot应用程序中使用Spring Security实现用户注册 211
6.4 在用户注册时验证电子邮件地址 219
6.4.1 技巧:在Spring Boot应用程序中验证用户电子邮件地址 219
6.5 控制登录失败次数 228
6.5.1 技巧:控制Spring Boot应用程序中的登录失败次数 228
6.6 实现Remember Me功能 234
6.6.1 技巧:使用Spring Security在Spring Boot应用程序中启用Remember Me功能 234
6.7 实现reCAPTCHA 237
6.7.1 技巧:使用Spring Security在Spring Boot应用程序中启用Google的reCAPTCHA 237
6.8 使用Google Authenticator启用双因素身份验证 241
6.8.1 技巧:在Spring Boot应用程序中启用双因素身份验证 242
6.9 使用OAuth2进行身份验证 252
6.9.1 技巧:在Spring Boot应用程序中启用Google账户登录 252
6.10 保护Actuator端点 257
6.10.1 技巧:保护Spring Boot Actuator端点 257
小结 259
第7章 使用Spring Boot开发RESTful Web服务 260
7.1 使用Spring Boot开发RESTful API 260
7.1.1 技巧:使用Spring Boot开发RESTful API 261
7.2 在Spring Boot RESTful API中管理异常 268
7.2.1 技巧:在RESTful API中处理异常 269
7.3 测试RESTful API 272
7.3.1 技巧:在Spring Boot应用程序中测试RESTful API 273
7.4 记录RESTful API 278
7.4.1 技巧:使用OpenAPI记录RESTful API 278
7.5 RESTful API版本控制 284
7.5.1 技巧:在RESTful API中实现版本控制 284
7.6 保护RESTful API 294
7.6.1 技巧:使用JWT授权RESTful API请求 295
小结 303
第3部分
第8章 响应式Spring Boot应用程序开发 307
8.1 响应式编程简介 307
8.1.1 背压 310
8.1.2 响应式编程的好处 311
8.2 了解Reactor项目 311
8.3 Spring WebFlux 314
8.3.1 技巧:使用带注解的控制器来开发响应式RESTful API 314
8.3.2 技巧:基于函数式端点来开发响应式RESTful API 322
8.4 测试响应式应用程序 327
8.4.1 技巧:使用WebClient构建API客户端 327
8.5 RSocket简介 333
8.5.1 技巧:使用RSocket开发Spring Boot应用程序 334
8.6 WebSocket简介 342
8.6.1 技巧:使用WebSocket构建Spring Boot应用程序 344
小结 350
第4部分
第9章 部署Spring Boot应用程序 353
9.1 将Spring Boot应用程序打包成可执行JAR文件并运行 354
9.1.1 技巧:将Spring Boot应用程序打包成可执行JAR文件并运行 354
9.2 将Spring Boot应用程序以WAR包格式部署到WildFly应用程序服务器 359
9.2.1 技巧:将Spring Boot应用程序打包为WAR文件并部署到WildFly应用程序服务器中 360
9.3 在Cloud Foundry中部署Spring Boot应用程序 368
9.3.1 技巧:将Spring Boot应用程序部署到Cloud Foundry 369
9.4 在Heroku中部署Spring Boot应用程序 372
9.4.1 技巧:在Heroku中部署Spring Boot应用程序 372
9.5 将Spring Boot应用程序部署到Docker容器中运行 374
9.5.1 技巧:创建容器镜像并在容器中运行Spring Boot应用程序 376
9.6 在Kubernetes集群中部署Spring Boot应用程序 380
9.6.1 技巧:在Kubernetes集群中部署Spring Boot应用程序 381
9.7 在Red Hat OpenShift中部署Spring Boot应用程序 385
9.7.1 技巧:在Red Hat OpenShift平台上部署Spring Boot应用程序 385
小结 388
第5部分
第 10章 在Spring Boot中使用Kotlin、原生镜像和GraphQL 391
10.1 在Spring Boot项目中 使用Kotlin 391
10.1.1 技巧:使用Kotlin开发Spring Boot应用程序 392
10.1.2 技巧:使用Spring Security保护Spring Boot Kotlin应用程序 398
10.2 Spring Native介绍 402
10.2.1 GraalVM简介 402
10.2.2 GraalVM原生镜像 403
10.2.3 Spring Boot原生镜像 404
10.2.4 技巧:使用buildpacks生成Spring Boot原生镜像 404
10.2.5 技巧:使用Maven插件生成Spring Boot原生镜像 409
10.2.6 理解Spring AOT Maven插件 411
10.3 在Spring Boot项目中 使用GraphQL 412
10.3.1 REST的问题 412
10.3.2 GraphQL简介 413
10.3.3 在Spring Boot项目中 使用GraphQL 415
10.3.4 技巧:在Spring Boot应用 程序中开发GraphQL API 415
10.3.5 技巧:在Spring Boot应用 程序中使用WebSocket开发GraphQL API 429
小结 431
附录A 生成和构建Spring Boot项目 432
附录B Spring MVC和Thymeleaf模板引擎 462