Spring Boot 應用開發實戰
內容描述
隨著移動互聯網的發展,對Web開發的需求日益上升。Spring Boot作為Web開發領域中的利器,無論是單體應用,還是用於面向服務架構或者微服務架構,都有不錯的表現。本書面向準備在Web開發領域一展拳腳的讀者,詳細介紹了Spring Boot 2.3應用開發的相關知識。 本書共10章,第1~2章介紹了Spring Boot 2.3開發基礎,包括環境搭建、依賴引入以及如何從零到一地構建一個基礎Spring Boot應用;第3~7章以章為單位聚焦不同技術領域,包括Web服務、數據持久化、服務安全性、測試驗證以及部署運維,結合詳細示例講解各領域內通用的解決方案;第8~10章為實戰內容,包括三種類型項目的實戰:聊天服務、在線商城、個人雲盤。 本書內容全面、實例豐富,非常值得廣大Web開發從業者作為案頭的參考書,也可作為高等院校電腦及相關專業的教材或課程設計參考書。
目錄大綱
封面
版權頁
內容簡介
前言
第1章Spring Boot基礎知識
1.1 Spring與Spring Boot
1.1.1當我們談論Spring時會談論些什麼
1.1.2什麼是Spring Boot
1.1.3 Spring Boot的優勢
1.2 Spring Boot 2.3開發環境
1.2.1選擇合適的JDK
1.2.2選擇趁手的IDE
1.2.3選擇適用於大型項目的自動化構建工具
1.3 Spring Initializr初始化項目
1.3.1什麼是Spring Initializr
1.3.2開始吧!start.spring.io
1.3.3使用IDE初始化Spring Boot工程
1.3.4初探Spring Boot CLI
1.4 Spring Boot目錄結構
1.4.1初始化的工程結構
1.4.2推薦的工程結構
1.4.3 Maven Wrapper讓構建工具隨源碼分發
1.5構建第一個Spring Boot項目
1.5.1經典“Hello World”
1.5.2使用JUnit 5測試
1.5.3創建工具類CommonUtil
1.5.4使用JPA進行數據持久化
1.5.5修改控制器以及對應模板文件
1.5.6發布HTTP接口
1.6 Spring Boot自動配置與外部配置
1.6.1自動配置
1.6.2外部配置
1.6.3命令行配置
1.6.4 application.yaml/properties配置文件
第2章使用Spring Boot構建Web應用程序
2.1實體與數據持久化
2.1.1數據持久化框架
2.1.2什麼是實體
2.1.3淺談Spring Data JPA
2.1.4使用Lombok簡化POJO
2.2 MVC與模板引擎
2.2 .1 MVC架構
2.2.2 Mustache模板引擎
2.2.3構建MVC架構的Web應用
2.3文件上傳與下載
2.3.1文件上傳
2.3.2文件下載
2.4 Spring Boot日誌
2.4.1使用預設配置
2.4.2基礎配置
2.4.3詳細配置
2.4.4 Lombok註解:@Sl4j和@Commonslog
2.4.5在Windows平台輸出彩色日誌的JANSI
2.5過濾器與攔截器
2.5.1過濾器
2.5.2使用過濾器實現訪問控制
2.5.3攔截器
2.5.4使用攔截器記錄請求參數
2.6 Spring Boot事件
2.6.1事件驅動模型
2.6.2內置事件
2.6.3監聽內置事件
2.6.4自定義事件
2.6.5異步事件
第3章創建RESTful Web服務
3.1 HTTP動詞
3.1.1構建一個基礎的RESTful Web服務
3.1.2是GetMapping嗎?是RequestMapping
3.2請求與響應
3.2.1 HTTP報文
3.2.2簡單請求與@RequestParam
3.2.3使用@PathVariable獲取URL中的參數
3.2.4借助@RequestHeader讀取請求頭
3.2.5 @RequestBody與@ResponseBody
3.2 .6使用ResponseEntity處理HTTP響應
3.3參數驗證
3.3.1基礎驗證Bean Validation
3.3.2高級驗證Spring Validation
3.3.3自定義校驗
3.4錯誤處理
3.4.1使用@ExceptionHandler處理異常
3.4.2使用HandlerExceptionResolver處理異常
3.4.3使用@ControllerAdvice處理異常
3.4.4拋出ResponseStatusException異常
3.5 Swagger文檔
3.5.1 Swagger/OpenAPI規範
3.5.2生成接口文檔
3.5.3使用註解生成文檔內容
第4章數據庫與持久化技術
4.1使用JdbcTemplate訪問關係型數據庫
4.1.1引入依賴
4.1.2準備數據
4.1.3 queryForObject()方法
4.1.4使用RowMapper映射實體
4.1.5使用BeanPropertyRowMapper映射
4.1.6 queryForList()方法
4.1.7不同的JDBCTemplate實現NamedParameterJdbcTemplate
4.1 .8 update()方法
4.2 JPA與關係型數據庫
4.2.1什麼是JPA
4.2.2再談Spring Data JPA
4.2.3基於JpaRepository接口查詢
4.2.4基於JpaSpecificationExecutor接口查詢
4.2.5基於JPQL或SQL
4.2.6多表連接
4.2.7級聯操作
4.2.8加載類型
4.3 Spring Data MongoDB
4.3.1準備工作
4.3.2使用MongoTemplate訪問MongDB
4.3.3使用MongoRepository訪問MongoDB
4.4 Spring Data Redis
4.4.1準備工作
4.4.2使用RedisRepository訪問Redis
4.4.3使用RedisTemplate訪問Redis
第5章應用程序安全性
5.1基於Spring Security的註冊登錄
5.1.1 Spring Security簡介
5.1.2用戶註冊
5.1.3用戶登錄
5.1.4 “記住我”功能
5.2權限管理
5.2.1權限與角色
5.2.2權限管理體系中的實體:用戶、角色與權限
5.2.3配置與應用
5.2.4權限管理註解
5.3 Session-Cookie
5.3.1什麼是Session-Cookie
5.3.2使用Spring Session管理Session
5.3.3 Session並發配置
5.3.4強制下線
5.4 JWT(JSON Web Token)
5.4.1關於JWT
5.4.2 JWT工作流程
5.4.3 Spring Security集成JWT
5.5 OAuth 2.0
5.5.1 OAuth 2.0簡介
5.5.2授權模式
5.5.3集成OAuth 2.0實現SSO單點登錄
第6章自動化測試
6.1單元測試
6.1.1測試金字塔
6.1.2 JUnit基礎
6.1.3 JUnit 5簡介
6.2斷言
6.2.1 assert關鍵字
6.2.2 JUnit 4裡的斷言
6.2.3 assertThat方法
6.2.4自定義Hamcrest匹配器
6.2.5斷言框架AssertJ
6.3測試中的模擬行為Mock
6.3. 1測試替身
6.3.2 Mockito框架
6.4集成測試
6.4.1 @WebMvcTest註解
6.4.2 @DataJpaTest註解
6.4.3 @SpringBootTest以及其他一些註解
第7章部署與運維
7.1發布與部署
7.1.1 Spring Boot自身的打包方式1——可執行jar文件
7.1.2 Spring Boot自身的打包方式2——部署於傳統Web容器的war格式
7.1.3更現代的發布流程1——基於Docker的發布與部署
7.1.4更現代的發布流程2——基於RPM的發布與部署
7.1.5多環境配置
7.2運行監控
7.2.1使用Spring Boot Actuator查看運行指標
7.2.2集成Prometheus
7.2.3 Grafana實現可視化監控
7.3 Spring Boot開發者工具
7.3.1整合spring-boot-devtools
7.3.2自動配置
7.3.3熱部署
7.3.4 LiveReload插件支持靜態資源的及時更新
7.3.5全局配置
7.3.6遠程應用
第8章實戰1:基於STOMP協議的聊天服務
8.1架構設計
8.2框架搭建
8.3功能實現
8.3.1了解WebSocket協議
8.3.2 HTTP請求升級至WebSocket的過程
8.3.3了解WebSocket應用場景
8.3.4集成WebSocket
8.3.5使用STOMP協議實現消息模塊
8.3.6模塊配置
8.3.7註冊登錄
8.3.8聊天記錄
8.3.9私聊功能
8.4測試與驗證
8.4.1集成測試
8.4.2手工測試
第9章實戰2:在線商城
9.1架構設計
9.2框架搭建
9.3數據庫設計
9.4功能實現
9.4.1模板引擎Thymeleaf
9.4.2實體類
9.4.3用戶註冊
9.4.4用戶登錄
9.4.5主頁以及商品列表
9.4.6購物車
9.4.7頁眉、導航條以及頁腳
9.5測試與驗證
9.5.1測試數據
9.5.2集成測試
9.5.3手工測試
第10章實戰3:個人云盤
10.1架構設計
10.2框架搭建
10.2.1 MinIO與對象存儲
10.2.2 MinIO部署與使用
10.2.3項目依賴項與軟件包結構
10.3數據庫設計
10.4功能實現
10.4.1 MinIO Java SDK簡介
10.4.2實現MinIO Starter
10.4.3實體類
10.4.4用戶註冊
10.4.5用戶登錄
10.4. 6雲盤主頁
10.4.7頁面配置
10.5測試與驗證
10.5.1集成測試
10.5.2手工測試
作者介紹
饒仕琪,BAT某公司高級Java開發工程師。
有豐富的開發經驗,曾參與大數據云平台、電商系統、物聯網平台等數個不同規模項目的開發工作。
積極地參與到項目開發週期的各個環節,包括性能分析、設計、開發和測試。
掌握的專業知識與開發框架,如Core Java、Spring、設計模式、通訊協議等,均在實戰中實踐並驗證。在主導或是參與項目的推進之外,不斷地學習並探索Web開發技術中的“最佳實踐”。