●第1章 Spring Boot概述 5
1.1 Spring Boot的三個核心特性 5
1.1.1 用于簡化依賴項管理的啟動程序 5
1.1.2 用于簡化部署的可執(zhí)行JAR 6
1.1.3 自動配置 8
1.2 總結(jié) 9
●第2章 選擇工具并開始 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 使用集成開發(fā)環(huán)境 22
2.7 了解main( ) 23
2.8 總結(jié) 25
●第3章 創(chuàng)建你的第一個Spring Boot REST API 26
3.1 使用API的方法和原因 26
3.2 REST 27
3.3 API,HTTP動詞風格 27
3.3.1 回到Initializr 28
3.3.2 創(chuàng)建一個簡單的域 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 信任,但要驗證 38
3.5 總結(jié) 41
●第4章 向Spring Boot應(yīng)用程序添加數(shù)據(jù)庫訪問 42
4.1 啟動數(shù)據(jù)庫訪問的自動配置 42
4.2 我們希望得到什么 43
4.2.1 添加數(shù)據(jù)庫依賴項 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 自動配置報告 68
5.3 Actuator 70
5.3.1 開啟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 定義實體 81
6.2 模板支持 82
6.3 存儲庫支持 82
6.4 @Before 83
6.5 使用Redis創(chuàng)建基于模板的服務(wù) 83
6.5.1 初始化項目 84
6.5.2 開發(fā)Redis服務(wù) 84
6.6 從模板轉(zhuǎn)換到存儲庫 92
6.7 使用JPA創(chuàng)建基于存儲庫的服務(wù) 95
6.7.1 初始化項目 95
6.7.2 開發(fā)JPA(MySQL)服務(wù) 96
6.7.3 加載數(shù)據(jù) 100
6.8 使用NoSQL文檔數(shù)據(jù)庫創(chuàng)建基于存儲庫的服務(wù) 104
6.8.1 初始化項目 104
6.8.2 開發(fā)MongoDB服務(wù) 106
6.9 使用NoSQL圖形數(shù)據(jù)庫創(chuàng)建基于存儲庫的服務(wù) 111
6.9.1 初始化項目 111
6.9.2 開發(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 初始化項目 123
7.2.2 開發(fā)Aircraft Positions應(yīng)用程序 124
7.3 傳遞消息 130
7.3.1 啟動PlaneFinder 131
7.3.2 擴展Aircraft Positions應(yīng)用程序 134
7.4 使用WebSocket創(chuàng)建對話 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進行響應(yīng)式編程 146
8.1 響應(yīng)式編程簡介 146
8.2 Project Reactor 149
8.3 Tomcat與Netty 151
8.4 響應(yīng)式數(shù)據(jù)訪問 151
8.5 響應(yīng)式Thymeleaf 162
8.6 用于全響應(yīng)式進程間通信的RSocket 163
8.6.1 什么是RSocket 163
8.6.2 使RSocket工作 164
8.7 總結(jié) 168
●第9章 為日益增加的生產(chǎn)就緒要求測試Spring Boot應(yīng)用程序 169
9.1 單元測試 169
9.2 @SpringBootTest介紹 170
9.2.1 Aircraft Positions應(yīng)用程序重要的單元測試 171
9.2.2 重構(gòu)以更好地測試 175
9.3 測試片 181
9.4 總結(jié) 187
●第10章 保護Spring Boot應(yīng)用程序 188
10.1 認證和授權(quán) 188
10.1.1 認證 189
10.1.2 授權(quán) 190
10.2 Spring Security概述 190
10.2.1 HTTP防火墻 190
10.2.2 安全過濾器鏈 191
10.2.3 請求和響應(yīng)報頭 191
10.3 使用Spring Security實現(xiàn)基于表單的認證和授權(quán) 191
10.3.1 添加Spring Security依賴項 192
10.3.2 添加認證 197
10.3.3 授權(quán) 203
10.4 對認證和授權(quán)實現(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)建一個“完全可執(zhí)行的”Spring Boot JAR 227
11.1.2 這是什么意思 232
11.2 擴展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 驗證鏡像是否存在 242
11.3.4 運行容器化應(yīng)用程序 243
11.4 用于檢查Spring Boot應(yīng)用程序容器鏡像的實用程序 244
11.4.1 pack 244
11.4.2 dive 246
11.5 總結(jié) 246
●第12章 深入探討響應(yīng)式編程 247
12.1 什么時候進行響應(yīng)式編程 247
12.2 測試響應(yīng)式應(yīng)用程序 248
12.2.1 首先,進行重構(gòu) 249
12.2.2 現(xiàn)在,進行測試 255
12.3 診斷和調(diào)試響應(yīng)式應(yīng)用程序 262
12.3.1 Hooks.onOperatorDebug( ) 263
12.3.2 檢查點 272
12.3.3 ReactorDebugAgent.init( ) 274
12.4 總結(jié) 276