Spring Boot套用開發實戰

Spring Boot套用開發實戰

《 Spring Boot套用開發實戰》是清華大學出版社出版的一本圖書

基本介紹

  • 中文名:Spring Boot套用開發實戰
  • 作者:饒仕琪
  • 出版社:清華大學出版社
  • ISBN:9787302575269 
內容簡介,作者簡介,圖書目錄,

內容簡介

隨著移動網際網路的發展,對Web開發的需求日益上升。Spring Boot作為Web開發領域中的利器,無論是單體套用,還是用於面向服霸捆臘務架構或者微服務架構,都有不錯的表現。本書面向準備在Web開發領域一展拳腳的讀者,詳細介紹了Spring Boot 2.3套用開發的相關知識。
本書共10章,第1~2章介紹了Spring Boot 2.3開發基礎,包括環境搭建、依賴引入以及如何從零到一地構建一個基礎Spring Boot套用;第3~7章以辨陵仔放章為單位聚焦不同技術領域,包括Web服務、數據持久化、服務安全性、測試驗證以及部署運維,結合詳細示例講解各領域內通用的解決方案;第8~10章為實戰內容,包括三種類型項目的實戰:聊天服務、線上商城、個人云盤。
本書內容全面、實例豐富,非常值得廣大Web開發從業者作為案頭的參考書,也可作為高等院校計算機及相關專業的教材或課程設計參考書。

作者簡介

饒仕琪,BAT某公司高級Java開發工程師。有豐富的開發經驗,曾參與大數據云平台、電商系統、物聯網平台等數個不同規模項目的開發工作。積極地參與到項目開發周期的各個環節,包括性能分析、設計、開發和測試。掌握的專業知識與開發框架,如Core Java、Spring、設計模式、通訊協定等,均在實戰中實踐並驗證。在主導或是參與項目的推進之外,不斷地學習並探索Web開發技術中的“最佳實踐”。

圖書目錄

第1章 Spring Boot基礎知識 1
1.1 Spring與Spring Boot 1
1.1.1 當我們談論Spring時會談論些什麼 1
1.1.2 什麼是Spring Boot 2
1.1.3 Spring Boot的優勢 3
1.2 Spring Boot 2.3開發環境 4
1.2.1 選擇合適的JDK 4
1.2.2 選擇趁手的IDE 5
1.2.3 選擇適用於大型項目的自動化構建工具 7
1.3 Spring Initializr初始化項目 8
1.3.1 什麼是Spring Initializr 8
1.3.2 開始吧!start.spring.io 8
1.3.3 使用IDE初臭慨舟始化Spring Boot工程 10
1.3.4 初茅蜜腿笑探Spring Boot CLI 12
1.4 Spring Boot目錄結構 13
1.4.1 初始化的工程結構 13
1.4.2 推薦的工程結構 15
1.4.3 Maven Wrapper讓構建工具隨源碼分發 17
1.5 構建第一個Spring Boot項目 18
1.5.1 經典“Hello World” 18
1.5.2 使用JUnit 5測試 19
1.5.3 創建工具類CommonUtil 21
1.5.4 使用JPA進行謎婆禁數據持久化 22
1.5.5 修改控制器以及對應模板檔案 25
1.5.6 發布HTTP接口 29
1.6 Spring Boot自動配置與外部配置 31
1.6.1 自動配置 31
1.6.2 外部配置 32
1.6.3 命令行配置 32
1.6.4 application.yaml/properties配置檔案 33
第2章 使用Spring Boot構建Web應用程式 36
2.1 實體與數據持久化 36
2.1.1 數據持久化框架 36
2.1.2 什麼是實體 37
2.1.3 淺談Spring Data JPA 38
2.1.4 使用Lombok簡化POJO 40
2.2 MVC與模板引擎 42
2.2.1 MVC架構 42
2.2.2 Mustache模板引擎 42
2.2.3 構建MVC架構的Web套用 46
2.3 檔案上傳與下載 50
2.3.1 檔案上傳 50
2.3.2 檔案下載 53
2.4 Spring Boot日誌 55
2.4.1 使用預設配置 55
2.4.2 基礎配置 56
2.4.3 詳細配置 57
2.4.4 Lombok註解:@Sl4j和@Commonslog 58
2.4.5 在Windows平台輸連雅精出彩色日誌備姜的JANSI 59
2.5 過濾器與攔截器 59
2.5.1 過濾器 60
2.5.2 使用過濾器實現訪問控制 60
2.5.3 攔截器 62
2.5.4 使用攔截器記錄請求參數 63
2.6 Spring Boot事件 64
2.6.1 事件驅動模型 64
2.6.2 內置事件 65
2.6.3 監聽內置事件 65
2.6.4 自定義事件 66
2.6.5 異步事件 68
第3章 創建RESTful Web服務 69
3.1 HTTP動詞 69
3.1.1 構建一個基礎的RESTful Web服務 70
3.1.2 是GetMapping嗎?是RequestMapping 74
3.2 請求與回響 76
3.2.1 HTTP報文 76
3.2.2 簡單請求與@RequestParam 77
3.2.3 使用@PathVariable獲取URL中的參數 79
3.2.4 藉助@RequestHeader讀取請求頭 80
3.2.5 @RequestBody與@ResponseBody 81
3.2.6 使用ResponseEntity處理HTTP回響 82
3.3 參數驗證 83
3.3.1 基礎驗證Bean Validation 83
3.3.2 高級驗證Spring Validation 84
3.3.3 自定義校驗 86
3.4 錯誤處理 88
3.4.1 使用@ExceptionHandler處理異常 88
3.4.2 使用HandlerExceptionResolver處理異常 89
3.4.3 使用@ControllerAdvice處理異常 90
3.4.4 拋出ResponseStatusException異常 92
3.5 Swagger文檔 92
3.5.1 Swagger/OpenAPI規範 92
3.5.2 生成接口文檔 93
3.5.3 使用註解生成文檔內容 94
第4章 資料庫與持久化技術 97
4.1 使用JdbcTemplate訪問關係型資料庫 97
4.1.1 引入依賴 97
4.1.2 準備數據 98
4.1.3 queryForObject()方法 99
4.1.4 使用RowMapper映射實體 99
4.1.5 使用BeanPropertyRowMapper映射 100
4.1.6 queryForList()方法 101
4.1.7 不同的JDBCTemplate實現NamedParameterJdbcTemplate 101
4.1.8 update()方法 102
4.2 JPA與關係型資料庫 103
4.2.1 什麼是JPA 103
4.2.2 再談Spring Data JPA 104
4.2.3 基於JpaRepository接口查詢 106
4.2.4 基於JpaSpecificationExecutor接口查詢 109
4.2.5 基於JPQL或SQL 113
4.2.6 多表連線 113
4.2.7 級聯操作 117
4.2.8 載入類型 117
4.3 Spring Data MongoDB 118
4.3.1 準備工作 118
4.3.2 使用MongoTemplate訪問MongDB 120
4.3.3 使用MongoRepository訪問MongoDB 124
4.4 Spring Data Redis 125
4.4.1 準備工作 125
4.4.2 使用RedisRepository訪問Redis 126
4.4.3 使用RedisTemplate訪問Redis 128
第5章 應用程式安全性 130
5.1 基於Spring Security的註冊登錄 130
5.1.1 Spring Security簡介 130
5.1.2 用戶註冊 131
5.1.3 用戶登錄 133
5.1.4 “記住我”功能 135
5.2 許可權管理 137
5.2.1 許可權與角色 137
5.2.2 許可權管理體系中的實體:用戶、角色與許可權 137
5.2.3 配置與套用 140
5.2.4 許可權管理註解 141
5.3 Session-Cookie 143
5.3.1 什麼是Session-Cookie 143
5.3.2 使用Spring Session管理Session 144
5.3.3 Session並發配置 146
5.3.4 強制下線 147
5.4 JWT(JSON Web Token) 148
5.4.1 關於JWT 148
5.4.2 JWT工作流程 149
5.4.3 Spring Security集成JWT 150
5.5 OAuth 2.0 156
5.5.1 OAuth 2.0簡介 156
5.5.2 授權模式 157
5.5.3 集成OAuth 2.0實現SSO單點登錄 160
第6章 自動化測試 164
6.1 單元測試 164
6.1.1 測試金字塔 164
6.1.2 JUnit基礎 165
6.1.3 JUnit 5簡介 170
6.2 斷言 172
6.2.1 assert關鍵字 173
6.2.2 JUnit 4里的斷言 173
6.2.3 assertThat方法 174
6.2.4 自定義Hamcrest匹配器 175
6.2.5 斷言框架AssertJ 177
6.3 測試中的模擬行為Mock 179
6.3.1 測試替身 179
6.3.2 Mockito框架 180
6.4 集成測試 183
6.4.1 @WebMvcTest註解 183
6.4.2 @DataJpaTest註解 187
6.4.3 @SpringBootTest以及其他一些註解 189
第7章 部署與運維 190
7.1 發布與部署 190
7.1.1 Spring Boot自身的打包方式1——可執行jar檔案 190
7.1.2 Spring Boot自身的打包方式2——部署於傳統Web容器的war格式 191
7.1.3 更現代的發布流程1——基於Docker的發布與部署 193
7.1.4 更現代的發布流程2——基於RPM的發布與部署 195
7.1.5 多環境配置 197
7.2 運行監控 198
7.2.1 使用Spring Boot Actuator查看運行指標 199
7.2.2 集成Prometheus 200
7.2.3 Grafana實現可視化監控 203
7.3 Spring Boot開發者工具 206
7.3.1 整合spring-boot-devtools 206
7.3.2 自動配置 207
7.3.3 熱部署 207
7.3.4 LiveReload外掛程式支持靜態資源的及時更新 208
7.3.5 全局配置 208
7.3.6 遠程套用 209
第8章 實戰1:基於STOMP協定的聊天服務 211
8.1 架構設計 211
8.2 框架搭建 212
8.3 功能實現 214
8.3.1 了解WebSocket協定 214
8.3.2 HTTP請求升級至WebSocket的過程 215
8.3.3 了解WebSocket套用場景 216
8.3.4 集成WebSocket 216
8.3.5 使用STOMP協定實現訊息模組 218
8.3.6 模組配置 225
8.3.7 註冊登錄 227
8.3.8 聊天記錄 230
8.3.9 私聊功能 233
8.4 測試與驗證 238
8.4.1 集成測試 238
8.4.2 手工測試 240
第9章 實戰2:線上商城 245
9.1 架構設計 245
9.2 框架搭建 246
9.3 資料庫設計 247
9.4 功能實現 248
9.4.1 模板引擎Thymeleaf 249
9.4.2 實體類 253
9.4.3 用戶註冊 256
9.4.4 用戶登錄 260
9.4.5 主頁以及商品列表 263
9.4.6 購物車 266
9.4.7 頁眉、導航條以及頁腳 271
9.5 測試與驗證 272
9.5.1 測試數據 273
9.5.2 集成測試 274
9.5.3 手工測試 276
第10章 實戰3:個人云盤 281
10.1 架構設計 281
10.2 框架搭建 282
10.2.1 MinIO與對象存儲 282
10.2.2 MinIO部署與使用 283
10.2.3 項目依賴項與軟體包結構 283
10.3 資料庫設計 285
10.4 功能實現 286
10.4.1 MinIO Java SDK簡介 286
10.4.2 實現MinIO Starter 290
10.4.3 實體類 294
10.4.4 用戶註冊 296
10.4.5 用戶登錄 298
10.4.6 雲盤主頁 300
10.4.7 頁面配置 306
10.5 測試與驗證 308
10.5.1 集成測試 308
10.5.2 手工測試 309
1.5 構建第一個Spring Boot項目 18
1.5.1 經典“Hello World” 18
1.5.2 使用JUnit 5測試 19
1.5.3 創建工具類CommonUtil 21
1.5.4 使用JPA進行數據持久化 22
1.5.5 修改控制器以及對應模板檔案 25
1.5.6 發布HTTP接口 29
1.6 Spring Boot自動配置與外部配置 31
1.6.1 自動配置 31
1.6.2 外部配置 32
1.6.3 命令行配置 32
1.6.4 application.yaml/properties配置檔案 33
第2章 使用Spring Boot構建Web應用程式 36
2.1 實體與數據持久化 36
2.1.1 數據持久化框架 36
2.1.2 什麼是實體 37
2.1.3 淺談Spring Data JPA 38
2.1.4 使用Lombok簡化POJO 40
2.2 MVC與模板引擎 42
2.2.1 MVC架構 42
2.2.2 Mustache模板引擎 42
2.2.3 構建MVC架構的Web套用 46
2.3 檔案上傳與下載 50
2.3.1 檔案上傳 50
2.3.2 檔案下載 53
2.4 Spring Boot日誌 55
2.4.1 使用預設配置 55
2.4.2 基礎配置 56
2.4.3 詳細配置 57
2.4.4 Lombok註解:@Sl4j和@Commonslog 58
2.4.5 在Windows平台輸出彩色日誌的JANSI 59
2.5 過濾器與攔截器 59
2.5.1 過濾器 60
2.5.2 使用過濾器實現訪問控制 60
2.5.3 攔截器 62
2.5.4 使用攔截器記錄請求參數 63
2.6 Spring Boot事件 64
2.6.1 事件驅動模型 64
2.6.2 內置事件 65
2.6.3 監聽內置事件 65
2.6.4 自定義事件 66
2.6.5 異步事件 68
第3章 創建RESTful Web服務 69
3.1 HTTP動詞 69
3.1.1 構建一個基礎的RESTful Web服務 70
3.1.2 是GetMapping嗎?是RequestMapping 74
3.2 請求與回響 76
3.2.1 HTTP報文 76
3.2.2 簡單請求與@RequestParam 77
3.2.3 使用@PathVariable獲取URL中的參數 79
3.2.4 藉助@RequestHeader讀取請求頭 80
3.2.5 @RequestBody與@ResponseBody 81
3.2.6 使用ResponseEntity處理HTTP回響 82
3.3 參數驗證 83
3.3.1 基礎驗證Bean Validation 83
3.3.2 高級驗證Spring Validation 84
3.3.3 自定義校驗 86
3.4 錯誤處理 88
3.4.1 使用@ExceptionHandler處理異常 88
3.4.2 使用HandlerExceptionResolver處理異常 89
3.4.3 使用@ControllerAdvice處理異常 90
3.4.4 拋出ResponseStatusException異常 92
3.5 Swagger文檔 92
3.5.1 Swagger/OpenAPI規範 92
3.5.2 生成接口文檔 93
3.5.3 使用註解生成文檔內容 94
第4章 資料庫與持久化技術 97
4.1 使用JdbcTemplate訪問關係型資料庫 97
4.1.1 引入依賴 97
4.1.2 準備數據 98
4.1.3 queryForObject()方法 99
4.1.4 使用RowMapper映射實體 99
4.1.5 使用BeanPropertyRowMapper映射 100
4.1.6 queryForList()方法 101
4.1.7 不同的JDBCTemplate實現NamedParameterJdbcTemplate 101
4.1.8 update()方法 102
4.2 JPA與關係型資料庫 103
4.2.1 什麼是JPA 103
4.2.2 再談Spring Data JPA 104
4.2.3 基於JpaRepository接口查詢 106
4.2.4 基於JpaSpecificationExecutor接口查詢 109
4.2.5 基於JPQL或SQL 113
4.2.6 多表連線 113
4.2.7 級聯操作 117
4.2.8 載入類型 117
4.3 Spring Data MongoDB 118
4.3.1 準備工作 118
4.3.2 使用MongoTemplate訪問MongDB 120
4.3.3 使用MongoRepository訪問MongoDB 124
4.4 Spring Data Redis 125
4.4.1 準備工作 125
4.4.2 使用RedisRepository訪問Redis 126
4.4.3 使用RedisTemplate訪問Redis 128
第5章 應用程式安全性 130
5.1 基於Spring Security的註冊登錄 130
5.1.1 Spring Security簡介 130
5.1.2 用戶註冊 131
5.1.3 用戶登錄 133
5.1.4 “記住我”功能 135
5.2 許可權管理 137
5.2.1 許可權與角色 137
5.2.2 許可權管理體系中的實體:用戶、角色與許可權 137
5.2.3 配置與套用 140
5.2.4 許可權管理註解 141
5.3 Session-Cookie 143
5.3.1 什麼是Session-Cookie 143
5.3.2 使用Spring Session管理Session 144
5.3.3 Session並發配置 146
5.3.4 強制下線 147
5.4 JWT(JSON Web Token) 148
5.4.1 關於JWT 148
5.4.2 JWT工作流程 149
5.4.3 Spring Security集成JWT 150
5.5 OAuth 2.0 156
5.5.1 OAuth 2.0簡介 156
5.5.2 授權模式 157
5.5.3 集成OAuth 2.0實現SSO單點登錄 160
第6章 自動化測試 164
6.1 單元測試 164
6.1.1 測試金字塔 164
6.1.2 JUnit基礎 165
6.1.3 JUnit 5簡介 170
6.2 斷言 172
6.2.1 assert關鍵字 173
6.2.2 JUnit 4里的斷言 173
6.2.3 assertThat方法 174
6.2.4 自定義Hamcrest匹配器 175
6.2.5 斷言框架AssertJ 177
6.3 測試中的模擬行為Mock 179
6.3.1 測試替身 179
6.3.2 Mockito框架 180
6.4 集成測試 183
6.4.1 @WebMvcTest註解 183
6.4.2 @DataJpaTest註解 187
6.4.3 @SpringBootTest以及其他一些註解 189
第7章 部署與運維 190
7.1 發布與部署 190
7.1.1 Spring Boot自身的打包方式1——可執行jar檔案 190
7.1.2 Spring Boot自身的打包方式2——部署於傳統Web容器的war格式 191
7.1.3 更現代的發布流程1——基於Docker的發布與部署 193
7.1.4 更現代的發布流程2——基於RPM的發布與部署 195
7.1.5 多環境配置 197
7.2 運行監控 198
7.2.1 使用Spring Boot Actuator查看運行指標 199
7.2.2 集成Prometheus 200
7.2.3 Grafana實現可視化監控 203
7.3 Spring Boot開發者工具 206
7.3.1 整合spring-boot-devtools 206
7.3.2 自動配置 207
7.3.3 熱部署 207
7.3.4 LiveReload外掛程式支持靜態資源的及時更新 208
7.3.5 全局配置 208
7.3.6 遠程套用 209
第8章 實戰1:基於STOMP協定的聊天服務 211
8.1 架構設計 211
8.2 框架搭建 212
8.3 功能實現 214
8.3.1 了解WebSocket協定 214
8.3.2 HTTP請求升級至WebSocket的過程 215
8.3.3 了解WebSocket套用場景 216
8.3.4 集成WebSocket 216
8.3.5 使用STOMP協定實現訊息模組 218
8.3.6 模組配置 225
8.3.7 註冊登錄 227
8.3.8 聊天記錄 230
8.3.9 私聊功能 233
8.4 測試與驗證 238
8.4.1 集成測試 238
8.4.2 手工測試 240
第9章 實戰2:線上商城 245
9.1 架構設計 245
9.2 框架搭建 246
9.3 資料庫設計 247
9.4 功能實現 248
9.4.1 模板引擎Thymeleaf 249
9.4.2 實體類 253
9.4.3 用戶註冊 256
9.4.4 用戶登錄 260
9.4.5 主頁以及商品列表 263
9.4.6 購物車 266
9.4.7 頁眉、導航條以及頁腳 271
9.5 測試與驗證 272
9.5.1 測試數據 273
9.5.2 集成測試 274
9.5.3 手工測試 276
第10章 實戰3:個人云盤 281
10.1 架構設計 281
10.2 框架搭建 282
10.2.1 MinIO與對象存儲 282
10.2.2 MinIO部署與使用 283
10.2.3 項目依賴項與軟體包結構 283
10.3 資料庫設計 285
10.4 功能實現 286
10.4.1 MinIO Java SDK簡介 286
10.4.2 實現MinIO Starter 290
10.4.3 實體類 294
10.4.4 用戶註冊 296
10.4.5 用戶登錄 298
10.4.6 雲盤主頁 300
10.4.7 頁面配置 306
10.5 測試與驗證 308
10.5.1 集成測試 308
10.5.2 手工測試 309

相關詞條

熱門詞條

聯絡我們