本書內(nèi)容非常豐富,不僅涵蓋了 Spring MVC、MyBatis Plus、Spring Data JPA、Spring Security、Quartz 等主流框架,整合了 MySQL、Druid、Redis、RabbitMQ、Elasticsearch 等互聯(lián)網(wǎng)常用技術(shù)與中間件,還涉及單元測試、異常處理、日志、Swagger 等技術(shù)細節(jié),以及 AOP、IOC、自動配置、數(shù)據(jù)庫事務、分布式鎖等硬核知識。本書從初始化到部署、監(jiān)控,實現(xiàn)了軟件全生命周期一站式打包解決。本書行文風格深入淺出、通俗易懂、風趣幽默、輕松愉快。從 Hello World 聊到源碼分析,從工具使用講到內(nèi)部原理,從日常生活說到設計哲學。本著“技術(shù)來源于生活,更要回歸于生活”的理念,本書通過大量生動、形象的類比將枯燥的技術(shù)描繪得“有滋有味”,讓你輕松學會這些知識。
CSDN 博客專家,現(xiàn)就職于國內(nèi)知名 A.I. 公司,曾任世界技能大賽(中國選拔賽)教練兼裁判。《Spring Boot 趣味私房課》專欄作者,講課通俗易懂,語言風趣幽默,其獨特的風格受到學生們的廣泛歡迎。
目錄
第 1 章 Spring Boot 憑什么成為 JVM圈的框架“一哥” 1
1.1 用數(shù)據(jù)說話 1
1.1.1 市場份額 1
1.1.2 關(guān)注度 2
1.2 多方支持 3
1.2.1 官方力推 3
1.2.2 “大廠”背書 4
1.3 打鐵還需自身硬 5
1.3.1 高顏值 5
1.3.2 有內(nèi)涵 6
1.4 要點回顧 7
第 2 章 兵馬未動,糧草先行——碼前準備 8
2.1 軟件環(huán)境 8
2.2 大管家 Maven 9
2.2.1 pom 文件 9
2.2.2 常用概念 11
2.3 打造一件趁手的兵器 13
2.3.1 設置 13
2.3.2 技巧 19
2.3.3 插件 25
2.4 要點回顧 26
第 3 章 牛刀小試——五分鐘入門 Spring Boot 27
3.1 萬物皆可 Hello World 27
3.1.1 創(chuàng)建一個 Web 工程 27
3.1.2 完成核心代碼 30
3.1.3 運行并查看效果 32
3.2 Spring Boot 的工程結(jié)構(gòu) 33
3.2.1 結(jié)構(gòu)詳解 34
3.2.2 結(jié)構(gòu)分類 35
3.3 珍愛生命,我用 Starters 35
3.3.1 沒有 Starters 的日子 36
3.3.2 有了 Starters 以后 37
3.3.3 什么是 Starters 37
3.4 值得擁有的 YAML 39
3.4.1 Properties 與 YAML 39
3.4.2 YAML 語法 40
3.5 要點回顧 41
第 4 章 斗轉(zhuǎn)星移,無人能及——Spring MVC 42
4.1 Spring MVC 簡介 42
4.2 接收參數(shù)的各種方式 43
4.2.1 常用注解 44
4.2.2 準備工作 45
4.2.3 無注解方式 46
4.2.4 @RequestParam 方式 46
4.2.5 @PathVariable 方式 47
4.2.6 @RequestBody 方式 47
4.3 參數(shù)校驗 49
4.3.1 開啟參數(shù)校驗 49
4.3.2 查看校驗效果 50
4.3.3 常用的參數(shù)校驗注解 51
4.4 原理分析 52
4.4.1 流程分析 52
4.4.2 深入核心 53
4.5 攔截器 54
4.5.1 自定義攔截器 55
4.5.2 攔截器的執(zhí)行流程 57
4.5.3 多個攔截器的執(zhí)行順序 59
4.6 要點回顧 62
第 5 章 你有 REST Style 嗎 63
5.1 你應該懂一點 HTTP 63
5.1.1 報文 63
5.1.2 狀態(tài)碼 65
5.1.3 安全性與冪等性 65
5.1.4 協(xié)議版本 66
5.2 接口代言人 Swagger 67
5.2.1 整合 67
5.2.2 效果 69
5.2.3 常用注解 69
5.2.4 增強版 70
5.3 解密 REST 71
5.3.1 REST 定義 71
5.3.2 RESTful 73
5.3.3 RESTful 實踐 73
5.4 URL 與 URI 76
5.4.1 關(guān)系 76
5.4.2 區(qū)別 77
5.5 要點回顧 77
第 6 章 與持久化有關(guān)的那些事兒 78
6.1 發(fā)展 78
6.2 派系之爭 79
6.3 Spring Data JPA 81
6.3.1 簡介 81
6.3.2 集成 83
6.3.3 極簡的 CRUD 86
6.3.4 分頁、排序 88
6.3.5 揭秘 JPA 88
6.3.6 約定方法 91
6.3.7 自定義 93
6.3.8 審計 94
6.4 MyBatis Plus 97
6.4.1 集成 97
6.4.2 代碼生成 98
6.4.3 自定義模板 104
6.4.4 分頁 107
6.4.5 條件構(gòu)造器 108
6.4.6 自動填充 112
6.5 強大的 Druid 114
6.5.1 基本原理 114
6.5.2 如何選擇連接池 115
6.5.3 配置 115
6.5.4 監(jiān)控 117
6.6 事務 120
6.6.1 事務的特性 120
6.6.2 臟讀、不可重復讀、幻讀 121
6.6.3 在 Spring 中使用事務 124
6.6.4 Spring 中的事務傳播行為 125
6.6.5 拓展 135
6.7 要點回顧 135
第 7 章 出征前送你 3 個錦囊 136
7.1 代碼的護身符——單元測試 136
7.1.1 一個單元測試的自我修養(yǎng) 136
7.1.2 為什么要寫單元測試 137
7.1.3 Junit 138
7.1.4 實戰(zhàn) 140
7.2 天有不測風云——異常處理 143
7.2.1 異常體系 143
7.2.2 全局異常處理 145
7.2.3 異常與意外 149
7.3 軟件系統(tǒng)的黑匣子——日志 149
7.3.1 日志的作用 149
7.3.2 日志級別 150
7.3.3 常見日志框架 151
7.3.4 配置 153
7.3.5 規(guī)范 156
7.3.6 得日志者得天下 157
7.4 要點回顧 157
第 8 章 Spring Boot 的核心原理 158
8.1 你真的懂 IOC 嗎 158
8.1.1 實現(xiàn)方式 158
8.1.2 傳統(tǒng)方式 vs 控制翻轉(zhuǎn) 159
8.1.3 IOC 的意義 163
8.2 什么是 AOP 164
8.2.1 AOP 與 OOP 164
8.2.2 為什么用 AOP 165
8.2.3 用在什么地方 166
8.2.4 怎么用 167
8.2.5 執(zhí)行順序 171
8.2.6 原理簡析 174
8.3 為什么一個 main 方法就能啟動項目 175
8.3.1 概覽 175
8.3.2 應用啟動計時 177
8.3.3 打印 Banner 178
8.3.4 創(chuàng)建上下文實例 179
8.3.5 構(gòu)建容器上下文 180
8.3.6 刷新上下文 181
8.4 比你更懂你的自動配置 184
8.4.1 自動配置原理 184
8.4.2 按需配置 191
8.5 要點回顧 192
第 9 章 互聯(lián)網(wǎng)應用性能瓶頸的“萬金油”——Redis 193
9.1 初識 Redis 193
9.1.1 Redis 特性 193
9.1.2 Redis 的“看家
本領(lǐng)”——快 195
9.2 Redis 可以做什么 197
9.3 使用 Redis 198
9.3.1 安裝 Redis 198
9.3.2 默認端口來歷 199
9.3.3 集成 200
9.3.4 Hello Redis 201
9.4 更多用法 201
9.4.1 Template 201
9.4.2 opsFor 202
9.4.3 綁定 key 操作 203
9.4.4 序列化策略 203
9.5 Redis 實現(xiàn)分布式鎖 205
9.5.1 鎖的自我修養(yǎng) 206
9.5.2 實現(xiàn)分布式鎖的方式 206
9.5.3 實現(xiàn)分布式鎖 207
9.5.4 其他實現(xiàn)方案 209
9.6 要點回顧 210
第 10 章 安全領(lǐng)域的“扛把子”——Spring Security 211
10.1 認證和授權(quán) 211
10.1.1 認證 211
10.1.2 授權(quán) 212
10.2 Spring Security 簡介 212
10.3 功能一覽 212
10.3.1 多種認證方式 212
10.3.2 多種加密方式 213
10.3.3 多種授權(quán)方式 214
10.4 動手實踐 215
10.4.1 集成 215
10.4.2 自定義用戶 215
10.4.3 從數(shù)據(jù)庫中獲取用戶信息 216
10.4.4 登錄成功與失敗處理 218
10.4.5 權(quán)限控制 220
10.4.6 異常處理 222
10.4.7 記住我 224
10.4.8 常用的安全配置 226
10.4.9 獲取當前用戶 228
10.5 前景 229
10.6 要點回顧 230
第 11 章 自律到“令人發(fā)指”的定時任務 231
11.1 什么時候需要定時任務 231
11.2 Java 中的定時任務 232
11.2.1 單機 232
11.2.2 分布式 232
11.3 Spring Task 實戰(zhàn) 232
11.3.1 故事背景 234
11.3.2 fixedDelay 模式 234
11.3.3 cron 模式 235
11.3.4 fixedRate 模式 236
11.4 整合 Quartz 237
11.4.1 核心概念 237
11.4.2 代碼實戰(zhàn) 237
11.4.3 Quartz 表說明 238
11.5 cron 表達式 239
11.6 要點回顧 240
第 12 章 RabbitMQ 從哪里來、是什么、能干什么、怎么干 241
12.1 消息隊列的由來 241
12.2 核心概念 241
12.2.1 客戶端 242
12.2.2 服務端 242
12.2.3 連接和信道 243
12.3 業(yè)務場景 244
12.4 工作模式 244
12.4.1 無交換器參與 245
12.4.2 有交換器參與 246
12.5 動手實踐 247
12.5.1 Web 管理端 247
12.5.2 代碼實戰(zhàn) 249
12.6 要點回顧 257
第 13 章 反其道行之的Elasticsearch 258
13.1 Elasticsearch 簡介 258
13.1.1 什么是搜索引擎 258
13.1.2 在搜索界的地位 259
13.1.3 為什么是 Elasticsearch 259
13.2 核心概念 260
13.2.1 核心對象 260
13.2.2 倒排索引 261
13.3 動手實踐 262
13.3.1 版本匹配 262
13.3.2 準備工作 262
13.3.3 Elasticsearch 的 CRUD 264
13.3.4 ElasticsearchRestTemplate 265
13.4 數(shù)據(jù)同步 267
13.4.1 定時同步 268
13.4.2 實時同步 268
13.5 要點回顧 268
第 14 章 項目上線的“最后一公里”——部署與監(jiān)控 269
14.1 部署 269
14.1.1 Jar 269
14.1.2 War 270
14.1.3 DevTools 272
14.2 監(jiān)控 275
14.2.1 Actuator 275
14.2.2 自定義 282
14.2.3 Spring Boot Admin 285
14.3 要點回顧 291
第 15 章 你學習技術(shù)的“姿勢”對嗎 292
15.1 技術(shù)應該怎么學 292
15.2 不怕麻煩 293
15.3 遇到問題怎么辦 294
15.3.1 IDE 會幫助你解決問題 294
15.3.2 錯誤信息會告訴你怎么解決問題 294
15.3.3 借助互聯(lián)網(wǎng) 295
15.3.4 提問的正確“姿勢” 296
15.4 要點回顧 296
附錄 A 使用 Docker 配置開發(fā)環(huán)境 297
Docker 常用命令 297
安裝環(huán)境 299