●第1章 Spring Boot概述 5
1.1 Spring Boot的三個(gè)核心特性 5
1.1.1 用于簡(jiǎn)化依賴項(xiàng)管理的啟動(dòng)程序 5
1.1.2 用于簡(jiǎn)化部署的可執(zhí)行JAR 6
1.1.3 自動(dòng)配置 8
1.2 總結(jié) 9
●第2章 選擇工具并開(kāi)始 10
2.1 Maven還是Gradle 10
2.1.1 Apache Maven 10
2.1.2 Gradle 12
2.1.3 在Maven和Gradle之間選擇 13
2.2 Java還是Kotlin 13
2.2.1 Java 13
2.2.2 Kotlin 14
2.2.3 在Java和Kotlin之間選擇 15
2.3 選擇Spring Boot的某一版本 15
2.4 Spring Initializr 16
2.5 命令行 19
2.6 使用集成開(kāi)發(fā)環(huán)境 22
2.7 了解main( ) 23
2.8 總結(jié) 25
●第3章 創(chuàng)建你的第一個(gè)Spring Boot REST API 26
3.1 使用API的方法和原因 26
3.2 REST 27
3.3 API,HTTP動(dòng)詞風(fēng)格 27
3.3.1 回到Initializr 28
3.3.2 創(chuàng)建一個(gè)簡(jiǎn)單的域 30
3.4 GET 31
3.4.1 @RestController概述 31
3.4.2 POST 35
3.4.3 PUT 35
3.4.4 DELETE 36
3.4.5 其他 36
3.4.6 信任,但要驗(yàn)證 38
3.5 總結(jié) 41
●第4章 向Spring Boot應(yīng)用程序添加數(shù)據(jù)庫(kù)訪問(wèn) 42
4.1 啟動(dòng)數(shù)據(jù)庫(kù)訪問(wèn)的自動(dòng)配置 42
4.2 我們希望得到什么 43
4.2.1 添加數(shù)據(jù)庫(kù)依賴項(xiàng) 43
4.2.2 添加代碼 44
4.3 保存和檢索數(shù)據(jù) 50
4.4 稍加打磨 53
4.5 總結(jié) 55
●第5章 配置和檢查Spring Boot應(yīng)用程序 56
5.1 應(yīng)用程序配置 57
5.1.1 @Value 58
5.1.2 @ConfigurationProperties 62
5.1.3 潛在的第三方選擇 66
5.2 自動(dòng)配置報(bào)告 68
5.3 Actuator 70
5.3.1 開(kāi)啟Actuator 75
5.3.2 使用Actuator提高環(huán)境適應(yīng)能力 77
5.3.3 使用Actuator將日志量調(diào)大 78
5.4 總結(jié) 79
●第6章 真正深入地研究數(shù)據(jù) 81
6.1 定義實(shí)體 81
6.2 模板支持 82
6.3 存儲(chǔ)庫(kù)支持 82
6.4 @Before 83
6.5 使用Redis創(chuàng)建基于模板的服務(wù) 83
6.5.1 初始化項(xiàng)目 84
6.5.2 開(kāi)發(fā)Redis服務(wù) 84
6.6 從模板轉(zhuǎn)換到存儲(chǔ)庫(kù) 92
6.7 使用JPA創(chuàng)建基于存儲(chǔ)庫(kù)的服務(wù) 95
6.7.1 初始化項(xiàng)目 95
6.7.2 開(kāi)發(fā)JPA(MySQL)服務(wù) 96
6.7.3 加載數(shù)據(jù) 100
6.8 使用NoSQL文檔數(shù)據(jù)庫(kù)創(chuàng)建基于存儲(chǔ)庫(kù)的服務(wù) 104
6.8.1 初始化項(xiàng)目 104
6.8.2 開(kāi)發(fā)MongoDB服務(wù) 106
6.9 使用NoSQL圖形數(shù)據(jù)庫(kù)創(chuàng)建基于存儲(chǔ)庫(kù)的服務(wù) 111
6.9.1 初始化項(xiàng)目 111
6.9.2 開(kāi)發(fā)Neo4j服務(wù) 112
6.10 總結(jié) 120
●第7章 使用Spring MVC創(chuàng)建應(yīng)用程序 122
7.1 Spring MVC是什么 122
7.2 使用模板引擎的終端用戶交互 123
7.2.1 初始化項(xiàng)目 123
7.2.2 開(kāi)發(fā)Aircraft Positions應(yīng)用程序 124
7.3 傳遞消息 130
7.3.1 啟動(dòng)PlaneFinder 131
7.3.2 擴(kuò)展Aircraft Positions應(yīng)用程序 134
7.4 使用WebSocket創(chuàng)建對(duì)話 138
7.4.1 什么是WebSocket 138
7.4.2 重構(gòu)Aircraft Positions應(yīng)用程序 139
7.5 總結(jié) 145
●第8章 使用Project Reactor和Spring WebFlux進(jìn)行響應(yīng)式編程 146
8.1 響應(yīng)式編程簡(jiǎn)介 146
8.2 Project Reactor 149
8.3 Tomcat與Netty 151
8.4 響應(yīng)式數(shù)據(jù)訪問(wèn) 151
8.5 響應(yīng)式Thymeleaf 162
8.6 用于全響應(yīng)式進(jìn)程間通信的RSocket 163
8.6.1 什么是RSocket 163
8.6.2 使RSocket工作 164
8.7 總結(jié) 168
●第9章 為日益增加的生產(chǎn)就緒要求測(cè)試Spring Boot應(yīng)用程序 169
9.1 單元測(cè)試 169
9.2 @SpringBootTest介紹 170
9.2.1 Aircraft Positions應(yīng)用程序重要的單元測(cè)試 171
9.2.2 重構(gòu)以更好地測(cè)試 175
9.3 測(cè)試片 181
9.4 總結(jié) 187
●第10章 保護(hù)Spring Boot應(yīng)用程序 188
10.1 認(rèn)證和授權(quán) 188
10.1.1 認(rèn)證 189
10.1.2 授權(quán) 190
10.2 Spring Security概述 190
10.2.1 HTTP防火墻 190
10.2.2 安全過(guò)濾器鏈 191
10.2.3 請(qǐng)求和響應(yīng)報(bào)頭 191
10.3 使用Spring Security實(shí)現(xiàn)基于表單的認(rèn)證和授權(quán) 191
10.3.1 添加Spring Security依賴項(xiàng) 192
10.3.2 添加認(rèn)證 197
10.3.3 授權(quán) 203
10.4 對(duì)認(rèn)證和授權(quán)實(shí)現(xiàn)OpenID Connect和OAuth2 210
10.4.1 Aircraft Positions客戶端應(yīng)用程序 212
10.4.2 PlaneFinder資源服務(wù)器 218
10.5 總結(jié) 225
●第11章 部署Spring Boot應(yīng)用程序 226
11.1 重溫Spring Boot可執(zhí)行JAR 226
11.1.1 構(gòu)建一個(gè)“完全可執(zhí)行的”Spring Boot JAR 227
11.1.2 這是什么意思 232
11.2 擴(kuò)展JAR 233
11.3 將Spring Boot應(yīng)用程序部署到容器中 238
11.3.1 從IDE創(chuàng)建容器鏡像 239
11.3.2 從命令行創(chuàng)建容器鏡像 241
11.3.3 驗(yàn)證鏡像是否存在 242
11.3.4 運(yùn)行容器化應(yīng)用程序 243
11.4 用于檢查Spring Boot應(yīng)用程序容器鏡像的實(shí)用程序 244
11.4.1 pack 244
11.4.2 dive 246
11.5 總結(jié) 246
●第12章 深入探討響應(yīng)式編程 247
12.1 什么時(shí)候進(jìn)行響應(yīng)式編程 247
12.2 測(cè)試響應(yīng)式應(yīng)用程序 248
12.2.1 首先,進(jìn)行重構(gòu) 249
12.2.2 現(xiàn)在,進(jìn)行測(cè)試 255
12.3 診斷和調(diào)試響應(yīng)式應(yīng)用程序 262
12.3.1 Hooks.onOperatorDebug( ) 263
12.3.2 檢查點(diǎn) 272
12.3.3 ReactorDebugAgent.init( ) 274
12.4 總結(jié) 276