《Spring Boot+Vue.js+分散式組件全棧開發訓練營(視頻教學版)》是2021年清華大學出版社出版的圖書,作者是曹宇、胡書敏。
基本介紹
- 中文名:Spring Boot+Vue.js+分散式組件全棧開發訓練營(視頻教學版)
- 作者:曹宇、胡書敏
- 出版社:清華大學出版社
- 出版時間:2021年10月1日
- 定價:69 元
- ISBN:9787302589778
內容簡介,圖書目錄,作者簡介,
內容簡介
本書以企業套用開發為目標,全面講述Spring Boot整合分散式組件進行全棧項目開發的實戰技能。全書分為三部分。第一部分(第1~9章)主要講述Spring Boot的相關技能,包括搭建Spring Boot開發環境、Spring Boot框架基礎、JPA運算元據庫、面向切面編程、基於Thymeleaf和FreeMarker的全棧開發、攔截器和過濾器、RESTful規範定義服務、Swagger組件可視化服務、logback和ELK組件輸出日誌、基於Spring Security和Shiro的安全框架技術和基於Junit的單元測試技術。第二部分(第10~15章)主要講述Spring Boot整合諸多分散式組件的技術,包括整合MongoDB、Redis和MyCAT數據層組件、整合Dubbo和Zookeeper、整合RabbitMQ訊息中間件和基於Nginx的分散式部署。第三部分(第16和17章),第16章以前後端分離項目為例,給出了基於Vue的全棧開發技術,其中前端用到了Vue、Element-UI和Axios等組件,後端用到了Redis快取組件和MyCAT分庫組件;第17章通過高並發限流和秒殺項目講述了Redis和RabbitMQ等分散式組件的用法。
圖書目錄
第1章 搭建Spring Boot開發環境 1
1.1 初識Spring Boot 1
1.1.1 Spring Boot是什麼 1
1.1.2 Spring、Spring MVC和Spring Boot的關係 1
1.1.3 Spring Boot是SSM框架的升級版 2
1.2 搭建Spring Boot的開發環境 3
1.2.1 安裝和配置JDK開發環境 3
1.2.2 安裝IDEA集成開發環境 5
1.2.3 安裝Maven工具 5
1.2.4 Maven工具與IDEA的集成 6
1.3 用Maven開發第一個Spring Boot項目 8
1.3.1 搭建基於Maven的Spring Boot項目 8
1.3.2 通過pom.xml檔案引入依賴包 9
1.3.3 開發第一個Spring Boot項目 11
1.3.4 運行並觀察效果 12
1.3.5 對Spring Boot項目的直觀說明 13
1.4 思考與練習 13
第2章 Spring Boot編程基礎 15
2.1 準備知識:什麼是控制反轉 15
2.1.1 以實例了解控制反轉的做法 15
2.1.2 Bean與Spring容器 17
2.1.3 控制反轉和依賴注入是一回事 17
2.2 Spring Boot項目的通用框架 18
2.3 開發Spring Boot啟動類 19
2.3.1 對註解@SpringBootApplication的說明 19
2.3.2 配置熱部署 20
清華大學出版社-圖書目錄
2.3.3 通過Banner定製啟動信息 21
2.3.4 關閉定製的啟動界面 22
2.4 編寫控制器類 22
2.4.1 用@Controller註解定義控制器類 22
2.4.2 用@RequestMapping映射請求 24
2.4.3 從請求中讀取參數 26
2.4.4 用produces參數返回JSON格式的結果 27
2.5 編寫業務邏輯類 28
2.5.1 用@Service註解編寫業務處理類 28
2.5.2 在控制器類中調用業務邏輯類的方法 29
2.6 編寫和讀取配置檔案 30
2.6.1 配置和讀取.properties檔案 30
2.6.2 配置和讀取.yml檔案 31
2.6.3 用@Value註解讀取配置檔案 32
2.6.4 在項目中用同一種風格讀取配置檔案 33
2.7 思考與練習 33
第3章 Spring Boot用JPA運算元據庫 35
3.1 搭建MySQL環境 35
3.1.1 安裝MySQL資料庫和客戶端 35
3.1.2 通過MySQL客戶端創建資料庫連線 36
3.1.3 通過MySQL客戶端創建資料庫 38
3.1.4 在資料庫中創建數據表 39
3.1.5 向數據表中插入若干數據 39
3.2 ORM概念與JPA組件 40
3.2.1 通過ORM分離業務和資料庫操作 40
3.2.2 JPA組件是ORM的解決方案 41
3.2.3 JPA組件的常用接口和實現類 41
3.3 通過JpaRepository訪問資料庫 42
3.3.1 創建項目,引入JPA依賴包 42
3.3.2 確認MySQL數據環境 43
3.3.3 編寫業務實體類 43
3.3.4 編寫JPA的配置檔案 44
3.3.5 用JpaRepository編寫Repo類 45
3.3.6 編寫控制器類和業務邏輯類 46
3.3.7 運行觀察增刪改查的效果 48
3.4 實現分頁和排序的JPA接口 49
3.4.1 用PagingAndSortingRepository實現排序和分頁 49
3.4.2 對排序和分頁對象的說明 51
3.5 深入了解JPA查詢數據的方式 52
3.5.1 JPA從方法名中解析資料庫操作的方式 52
3.5.2 用@Query查詢數據 53
3.5.3 用nativeQuery參數運行原生SQL語句 53
3.6 通過JPA組件引入事務 54
3.6.1 “要么全都做,要么全都不做”的事務 54
3.6.2 用@Transactional註解管理事務 54
3.6.3 定義事務隔離級別 56
3.6.4 定義事務傳播機制 57
3.6.5 @transactional註解使用建議 58
3.7 思考與練習 59
第4章 Spring Boot整合前端模板 60
4.1 Thymeleaf模板與前後端互動 60
4.1.1 用於前後端互動的ModelAndView對象 60
4.1.2 Spring Boot與Thymeleaf整合的範例 61
4.1.3 用Thymeleaf循環展示數據 64
4.1.4 用Thymeleaf進行條件判斷 66
4.2 Spring Boot、JPA整合Thymeleaf 67
4.2.1 創建項目並準備數據環境 67
4.2.2 通過JPA獲取數據並傳給前端 68
4.2.3 用Thymeleaf模板演示分頁效果 71
4.3 Spring Boot整合FreeMarker 74
4.3.1 Spring Boot整合FreeMarker的簡單範例 74
4.3.2 用FreeMarker模板展示分頁效果 76
4.4 思考與練習 79
第5章 面向切面編程與過濾器攔截器 80
5.1 面向切面的概念和做法 80
5.1.1 相關概念 80
5.1.2 用範例了解面向切面編程 81
5.1.3 環繞通知與攔截器 85
5.2 Spring Boot與攔截器 85
5.2.1 攔截器的重要方法 85
5.2.2 Spring Boot整合多個攔截器 86
5.2.3 從攔截器的運行效果觀察執行順序 90
5.3 Spring Boot與過濾器 90
5.3.1 過濾器的3個重要方法 90
5.3.2 Spring Boot整合多個過濾器 91
5.3.3 從運行效果觀察過濾器的執行順序 94
5.3.4 過濾器和攔截器的異同點 94
5.4 思考與練習 95
第6章 用RESTful規範提供統一風格的服務 96
6.1 RESTful規範與模組間的通信 96
6.1.1 URL請求、HTTP動作與返回碼 96
6.1.2 什麼是RESTful 97
6.1.3 增刪改查方法對應的RESTful接口名 98
6.1.4 調用不同版本的請求 98
6.2 用RESTful統一項目的對外服務風格 99
6.2.1 創建項目 99
6.2.2 定義pom.xml,編寫啟動類 100
6.2.3 統一返回結果的格式 100
6.2.4 在控制器類中定義增刪改查方法 102
6.2.5 全局性異常處理機制 104
6.3 用RestTemplate調用RESTful請求 105
6.3.1 RestTemplate對象重要方法說明 106
6.3.2 用RestTemplate發起POST請求 106
6.3.3 用RestTemplate發起GET請求 107
6.3.4 觀察異常處理的結果 108
6.3.5 用RestTemplate發起PUT請求 109
6.3.6 用RestTemplate發起DELETE請求 109
6.4 用Swagger可視化RESTful請求 110
6.4.1 Swagger能解決哪些問題 110
6.4.2 用Swagger可視化RESTful請求 110
6.4.3 演示運行效果 112
6.5 思考與練習 114
第7章 Spring Boot整合日誌組件 116
7.1 Spring Boot整合logback輸出日誌 116
7.1.1 Spring Boot整合logback的範例項目 116
7.1.2 用不同級別的日誌輸出不同種類的信息 120
7.1.3 為每個執行緒設定唯一標識,方便追蹤問題 121
7.1.4 格式化日誌檔案名稱,方便排查問題 122
7.2 搭建ELK組件開發環境 122
7.2.1 ELK組件與工作示意圖 123
7.2.2 搭建ELK運行環境 123
7.3 Spring Boot整合ELK平台 126
7.3.1 Spring Boot向ELK輸出日誌 126
7.3.2 在Kibana中觀察日誌 127
7.4 思考與練習 129
第8章 Spring Boot整合Junit單元測試組件 131
8.1 了解單元測試 131
8.1.1 單元測試的目的及難點分析 131
8.1.2 Junit組件簡介 132
8.1.3 單元測試同其他測試的關係 132
8.2 對待測試項目的分析 133
8.2.1 構建待測試的項目 133
8.2.2 測試要點分析 134
8.3 Spring Boot整合Junit 135
8.3.1 引入Junit依賴包 135
8.3.2 測試控制器方法 135
8.3.3 測試業務處理方法 138
8.3.4 測試數據訪問方法 140
8.4 思考與練習 141
第9章 Spring Boot集成安全管理框架 143
9.1 安全管理與Spring Security框架 143
9.1.1 安全管理需求點分析 143
9.1.2 Spring Security框架介紹 144
9.2 Spring Boot整合Spring Security 144
9.2.1 引入依賴包,編寫啟動類和控制類 144
9.2.2 觀察身份驗證效果 145
9.2.3 在配置檔案中管理登錄信息 146
9.2.4 以配置類的方式管理登錄信息 146
9.2.5 基於角色的許可權管理 147
9.3 基於資料庫的安全管理框架 149
9.3.1 準備數據 149
9.3.2 創建項目,編寫pom.xml 151
9.3.3 編寫資料庫配置檔案 152
9.3.4 從資料庫中獲取安全信息 152
9.4 Spring Boot整合Shiro框架 153
9.4.1 Shiro框架概述 153
9.4.2 Spring Boot整合Shiro框架的範例說明 154
9.4.3 編寫pom.xml檔案和啟動類 154
9.4.4 編寫控制器類 155
9.4.5 編寫Shiro相關類 156
9.4.6 編寫登錄等前端代碼 159
9.4.7 觀察基於Shiro的安全驗證流程 160
9.5 思考與練習 161
第10章 Spring Boot整合MongoDB資料庫 163
10.1 了解MongoDB 163
10.1.1 MongoDB概述 163
10.1.2 MongoDB的優缺點 164
10.1.3 安裝MongoDB資料庫 164
10.2 使用MongoDB 165
10.2.1 創建資料庫和數據表 165
10.2.2 運算元據表的數據 166
10.3 Spring Boot整合MongoDB 167
10.3.1 項目和資料庫的說明 167
10.3.2 編寫pom檔案、啟動類和配置檔案 167
10.3.3 編寫業務模型類 168
10.3.4 通過MongoTemplate操作MongoDB 169
10.3.5 通過JPA操作MongoDB 171
10.3.6 觀察運行結果 172
10.4 思考與練習 173
第11章 Spring Boot整合Redis快取 174
11.1 了解Redis 174
11.1.1 Redis概述 174
11.1.2 Redis的優缺點 175
11.1.3 搭建Redis資料庫環境 175
11.1.4 Redis伺服器和客戶端 176
11.2 Redis常用命令 176
11.2.1 set和get命令 176
11.2.2 del命令 177
11.2.3 exists命令 177
11.3 Redis基本數據類型 178
11.3.1 字元串類型 178
11.3.2 Hash類型 178
11.3.3 列表類型 179
11.3.4 集合類型 180
11.3.5 有序集合類型 180
11.4 Spring Boot整合Redis 181
11.4.1 項目說明 181
11.4.2 引入依賴包 182
11.4.3 編寫配置檔案和啟動類 182
11.4.4 編寫控制器類和業務模型類 183
11.4.5 編寫業務邏輯類 184
11.4.6 編寫與Redis互動的類 185
11.4.7 觀察和Redis整合的效果 186
11.5 Spring Boot整合資料庫與Redis快取 186
11.5.1 資料庫整合快取的說明 186
11.5.2 防快取穿透的設計 187
11.5.3 防記憶體溢出的設計 187
11.5.4 整合資料庫和快取的項目 188
11.5.5 觀察MySQL和Redis的整合效果 193
11.6 思考與練習 194
第12章 Spring Boot整合MyCAT分庫組件 196
12.1 MyCAT分庫組件概述 196
12.1.1 分庫需求與MyCAT組件 196
12.1.2 MyCAT組件的重要配置檔案 197
12.1.3 下載MyCAT組件 198
12.2 MyCAT整合MySQL實現分庫效果 198
12.2.1 分庫效果框架圖 199
12.2.2 用MyCAT實現分庫效果 199
12.2.3 觀察分庫效果 202
12.3 Spring Boot整合MyCAT組件 202
12.3.1 通過pom.xml檔案引入依賴包 202
12.3.2 編寫配置檔案 203
12.3.3 實現整合效果 203
12.3.4 觀察分庫效果 205
12.4 Spring Boot整合Redis與MyCAT組件 206
12.4.1 整合後的數據服務架構 206
12.4.2 實現整合效果 206
12.4.3 觀察整合效果 210
12.5 思考與練習 211
第13章 Spring Boot整合Dubbo和Zookeeper組件 213
13.1 Zookeeper和Dubbo框架概述 213
13.1.1 遠端方法調用和Dubbo組件 213
13.1.2 Dubbo註冊中心與Zookeeper組件 214
13.1.3 下載並配置Zookeeper組件 215
13.2 搭建基於Dubbo的服務提供者 215
13.2.1 編寫pom.xml和啟動類 216
13.2.2 編寫配置檔案 217
13.2.3 編寫服務接口和服務類 217
13.2.4 關於逾時時間說明 218
13.2.5 關於重試次數的說明 218
13.3 編寫調用Dubbo服務的項目 219
13.3.1 編寫配置檔案 219
13.3.2 重寫Dubbo服務方法的接口 219
13.3.3 通過@Reference註解調用方法 219
13.3.4 觀察Dubbo調用的效果 220
13.4 思考與練習 221
第14章 Spring Boot整合RabbitMQ訊息中間件 222
14.1 RabbitMQ概述 222
14.1.1 訊息佇列和RabbitMQ訊息中間件 222
14.1.2 訊息交換機與訊息佇列 223
14.1.3 搭建RabbitMQ工作環境 223
14.2 Spring Boot整合RabbitMQ 224
14.2.1 項目概述 224
14.2.2 編寫pom.xml和啟動類 225
14.2.3 編寫配置檔案 225
14.2.4 編寫待傳輸的對象類 225
14.2.5 編寫訊息交換機和訊息佇列的配置類 226
14.2.6 傳送String和對象型的訊息 227
14.2.7 觀察接收String訊息的效果 228
14.2.8 觀察接收對象類訊息的效果 229
14.3 用RabbitMQ搭建異步互動系統 229
14.3.1 異步系統概述 230
14.3.2 包含RabbitMQ的服務調用者 230
14.3.3 包含RabbitMQ的服務提供者 233
14.3.4 觀察異步互動流程 234
14.4 思考與練習 235
第15章 項目打包、分散式部署和監控 236
15.1 打包和運行Spring Boot項目 236
15.1.1 用Maven命令打包 236
15.1.2 用Java命令啟動項目 238
15.2 基於Nginx的分散式部署 239
15.2.1 Nginx組件與分散式負載均衡 239
15.2.2 下載Nginx組件 239
15.2.3 實踐分散式部署Spring Boot項目 240
15.3 監控Spring Boot項目 242
15.3.1 引入依賴包,監控端點 242
15.3.2 配置監控項 243
15.3.3 可視化監控並郵件告警 244
15.4 思考與練習 247
第16章 Spring Boot+Vue前後端分離項目的開發 249
16.1 項目概述 249
16.1.1 演示增刪改查訂單效果 249
16.1.2 後端項目說明 250
16.1.3 前端框架和組件分析 251
16.2 後端Spring Boot項目實踐要點 252
16.2.1 application.yml配置檔案 252
16.2.2 跨域問題與CORS解決方法 253
16.2.3 控制器層對外提供的服務方法 253
16.3 搭建前端Vue項目框架 255
16.3.1 安裝Node.js和Visual Studio Code 255
16.3.2 創建前端Vue項目 255
16.3.3 引入Element-ui和Axios組件 256
16.4 開發前端頁面 256
16.4.1 前端重要檔案的說明 256
16.4.2 在首頁添加諸多組件 257
16.4.3 定義路由效果 258
16.4.4 分頁展示訂單 259
16.4.5 修改訂單頁面 262
16.4.6 添加訂單頁面 264
16.5 觀察項目的運行效果 265
16.5.1 啟動前後端項目 266
16.5.2 展示訂單和刪除訂單 266
16.5.3 修改訂單 267
16.5.4 添加訂單 267
16.6 思考與練習 267
第17章 Spring+Redis+RabbitMQ限流和秒殺項目的開發 269
17.1 項目概述 269
17.2 基於Redis的Lua腳本分析 270
17.2.1 Lua腳本的特性 270
17.2.2 在Redis中引入Lua腳本 270
17.2.3 Lua腳本的返回值和參數 271
17.2.4 分支語句 272
17.3 實現限流和秒殺功能 272
17.3.1 創建項目並編寫配置檔案 272
17.3.2 編寫啟動類和控制器類 273
17.3.3 訊息佇列的相關配置 275
17.3.4 實現秒殺功能的Lua腳本 275
17.3.5 在實現業務實現類中實現限流和秒殺 276
17.3.6 觀察秒殺效果 278
17.4 以異步方式保存秒殺結果 278
17.4.1 創建項目並設計數據表 279
17.4.2 配置訊息佇列和資料庫參數 279
17.4.3 監聽訊息佇列並保存秒殺結果 281
17.4.4 全鏈路效果演示 282
17.5 思考與練習 283
作者簡介
曹宇,副教授,從事高校教育工作17年,主要研究領域為計算機套用技術,主講Java編程課程多年,主導開發了EPC企業專利信息協同平台、大宗商品信息管理系統等多個項目,公開發表了《基於蒙太古語義學和受控自然語言的文獻信息系統的實現》《基於JSON、JavaScript、HTML5和前端存儲技術的均衡運算框架研究》《基於UWB的ROS機器人室內定位系統設計》等論文數十篇。
胡書敏,大連理工大學計算機碩士,有15年Java開發經驗,資深Java架構師,目前在SAP從事Java開發工作,有平安、花旗和IBM等大廠的工作經驗,同時還有近8年Java技術面試官的經驗。出版過《Java Web輕量級開發面試教程》《Java核心技術及面試指南》《Spring Cloud實戰》等技術圖書。