深入淺出 Spring Boot 3.x

楊開振

  • 出版商: 人民郵電
  • 出版日期: 2024-04-01
  • 定價: $779
  • 售價: 8.5$662
  • 語言: 簡體中文
  • 頁數: 392
  • ISBN: 7115632820
  • ISBN-13: 9787115632821
  • 相關分類: Java 相關技術
  • 下單後立即進貨 (約2週~3週)

  • 深入淺出 Spring Boot 3.x-preview-1
  • 深入淺出 Spring Boot 3.x-preview-2
深入淺出 Spring Boot 3.x-preview-1

買這商品的人也買了...

商品描述

Spring框架是Java EE開發的強有力的工具和事實標準,而Spring Boot採用“約定優於配置”的原則簡化 Spring的開發,成為業界流行的微服務開發框架,被越來越多的企業採用。為了適應新潮流,本書對Spring Boot 3.x技術進行深入講解。

本書從一個簡單的項目開始講解Spring Boot企業級開發,其內容包含全註解下的Spring IoC和Spring AOP、數據庫編程(JPA、MyBatis和JDBC)、數據庫事務、NoSQL數據庫(Redis和MongoDB)技術、Spring MVC、REST風格、互聯網搶購業務、監控與容器部署、Spring Cloud Alibaba微服務開發等。

本書內容緊扣互聯網企業的實際需求,從全註解下的Spring知識講到Spring Boot的企業級開發,對於Java開發人員,尤其是初學Spring Boot的人員和需要從傳統Spring轉向Spring Boot開發的技術人員,具有很高的參考價值。

作者簡介

杨开振,精通Java互联网技术,拥有十余年企业级应用开发经验,著有热销书《深入浅出Spring Boot 2.x》《Spring Cloud微服务和分布式系统实践》《对照Excel,零基础学Python数据分析》《深入浅出MyBatis技术原理与实战》和《Java EE互联网轻量级框架整合开发——SSM框架(Spring MVC+Spring+MyBatis)和Redis实现》。

目錄大綱

第1章 Spring Boot 3.x的來臨 1

1.1 Spring框架的歷史 1

1.2 Spring Boot的特點 3

1.3 Spring和Spring Boot的關系 4

1.4 開發Spring Boot項目 4

 

第2章 聊聊開發環境搭建和基本開發 8

2.1 搭建Spring Boot開發環境 8

2.1.1 搭建Eclipse開發環境 8

2.1.2 搭建IntelliJ IDEA開發環境 11

2.2 使用自定義配置 13

2.3 開發自己的Spring Boot項目 14

 

第3章 全註解下的Spring IoC 16

3.1 IoC容器簡介 16

3.2 裝配你的Bean 20

3.2.1 通過掃描裝配你的Bean 20

3.2.2 自定義第三方Bean 25

3.3 依賴註入 26

3.3.1 註解@Autowired 27

3.3.2 消除歧義性—@Primary和@Qualifier 29

3.3.3 帶有參數的構造方法類的裝配 29

3.4 生命周期 30

3.5 使用屬性文件 36

3.6 條件裝配Bean 39

3.7 Bean的作用域 40

3.8 使用註解@Profile 42

3.9 使用Sp EL 43

 

第4章 開始約定編程—Spring AOP 46

4.1 約定編程 46

4.1.1 約定 46

4.1.2 ProxyBean的實現 51

4.2 AOP的知識 54

4.2.1 為什麽要使用AOP 54

4.2.2 AOP的術語和流程 57

4.3 AOP開發詳解 59

4.3.1 確定攔截目標 59

4.3.2 開發切麵 59

4.3.3 定義切點 60

4.3.4 測試AOP 62

4.3.5 環繞通知 64

4.3.6 引入 65

4.3.7 通知獲取參數 67

4.3.8 織入 68

4.4 多個切麵 68

 

第5章 訪問數據庫 73

5.1 配置數據源 74

5.1.1 配置默認數據源 74

5.1.2 配置自定義數據源 74

5.2 使用JdbcTemplate操作數據庫 78

5.3 使用JPA(Hibernate)操作數據庫 81

5.3.1 概述 81

5.3.2 開發JPA 82

5.4 整合MyBatis框架 87

5.4.1 MyBatis簡介 87

5.4.2 MyBatis的配置 88

5.4.3 Spring Boot整合MyBatis 92

5.4.4 MyBatis的其他配置 95

 

第6章 聊聊數據庫事務處理 97

6.1 JDBC的數據庫事務 98

6.2 Spring聲明式事務的使用 100

6.2.1 Spring聲明式事務約定 100

6.2.2 註解@Transactional的配置項 101

6.2.3 Spring事務管理器 103

6.2.4 測試數據庫事務 105

6.3 隔離級別 109

6.3.1 數據庫事務的要素 109

6.3.2 詳解隔離級別 110

6.4 傳播行為 114

6.4.1 傳播行為 115

6.4.2 測試傳播行為 116

6.4.3 事務狀態 121

6.5 Spring數據庫事務實戰 122

6.5.1 準確啟用Spring數據庫事務 122

6.5.2 占用事務時間過長 123

6.5.3 @Transactional自調用失效問題 123

 

第7章 使用性能利器—Redis 128

7.1 spring-data-redis項目簡介 129

7.1.1 spring-data-redis項目的設計 129

7.1.2 RedisTemplate和StringRedisTemplate 131

7.1.3 Spring對Redis數據類型操作的封裝 134

7.1.4 SessionCallback和RedisCallback接口 135

7.2 在Spring Boot中配置和操作Redis 136

7.2.1 在Spring Boot中配置Redis 136

7.2.2 操作Redis數據類型 137

7.3 Redis的一些特殊用法 141

7.3.1 使用Redis事務 141

7.3.2 使用Redis流水線 143

7.3.3 使用Redis發布/訂閱 144

7.3.4 使用Lua腳本 147

7.4 使用Spring緩存註解操作Redis 150

7.4.1 緩存管理器和緩存的啟用 150

7.4.2 開發緩存註解 151

7.4.3 測試緩存註解 156

7.4.4 緩存註解自調用失效問題 158

7.4.5 緩存臟數據說明 159

7.4.6 自定義緩存管理器 160

 

第8章 文檔數據庫—MongoDB 162

8.1 配置MongoDB 163

8.2 使用MongoTemplate實例 164

8.2.1 準備MongoDB的文檔 164

8.2.2 使用MongoTemplate操作文檔 165

8.3 使用JPA 170

8.3.1 基本用法 170

8.3.2 使用自定義查詢 172

 

第9章 初識Spring MVC 175

9.1 Spring MVC框架的設計 176

9.2 Spring MVC流程 176

9.3 定製Spring MVC的初始化 182

9.4 Spring MVC實例 184

9.4.1 開發控制器 184

9.4.2 視圖和視圖渲染 185

 

第10章 深入Spring MVC開發 188

10.1 處理器映射 188

10.2 獲取控制器參數 189

10.2.1 在無註解的情況下獲取參數 190

10.2.2 使用@RequestParam獲取參數 190

10.2.3 傳遞數組 191

10.2.4 傳遞JSON數據集 191

10.2.5 通過URL傳遞參數 194

10.2.6 獲取格式化參數 195

10.3 自定義參數轉換規則 196

10.3.1 處理器轉換參數邏輯 197

10.3.2 一對一轉換器 200

10.3.3 GenericConverter集合和數組轉換 202

10.4 數據驗證 202

10.4.1 JSR-303驗證 202

10.4.2 參數驗證機制 205

10.5 數據模型 208

10.6 視圖和視圖解析器 210

10.6.1 視圖設計 210

10.6.2 視圖實例—導出Excel文檔 212

10.7 文件上傳 214

10.7.1 文件上傳的配置項 214

10.7.2 開發文件上傳功能 215

10.8 攔截器 218

10.8.1 設計攔截器 218

10.8.2 開發攔截器 219

10.8.3 多個攔截器方法的運行順序 221

10.9 國際化 224

10.9.1 國際化消息源 224

10.9.2 國際化解析器 225

10.9.3 國際化實例—SessionLocaleResolver 227

10.10 Spring MVC拾遺 230

10.10.1 @ResponseBody轉換為JSON的秘密 230

10.10.2 重定向 231

10.10.3 操作會話屬性 233

10.10.4 給控制器增加通知 235

10.10.5 獲取請求頭參數 237

 

第11章 構建REST風格網站 240

11.1 REST簡述 240

11.1.1 REST名詞解釋 240

11.1.2 HTTP的動作 241

11.1.3 REST風格的一些誤區 242

11.2 使用Spring MVC開發REST風格端點 242

11.2.1 Spring MVC整合REST 242

11.2.2 使用Spring開發REST風格的端點 243

11.2.3 使用@RestController 251

11.2.4 渲染結果 252

11.2.5 處理HTTP狀態碼、響應頭和異常 254

11.3 客戶端請求RestTemplate 257

11.3.1 使用RestTemplate請求後端 258

11.3.2 獲取狀態碼和響應頭 261

11.3.3 定製請求體和響應類型 262

 

第12章 安全—Spring Security 264

12.1 概述和簡單安全驗證 264

12.1.1 使用用戶密碼登錄系統 265

12.1.2 Spring Security的配置項 266

12.1.3 開發Spring Security的主要的類 266

12.2 使用UserDetailsService接口定製用戶信息 267

12.2.1 使用內存保存用戶信息 267

12.2.2 從數據庫中讀取用戶信息 268

12.2.3 使用自定義UserDetailsService對象 270

12.2.4 密碼編碼器 270

12.3 限制請求 271

12.3.1 配置請求路徑訪問權限 272

12.3.2 自定義驗證方法 274

12.3.3 不攔截的請求 275

12.3.4 防止跨站點請求偽造 275

12.4 登錄和登出設置 277

12.4.1 自定義登錄頁面 277

12.4.2 啟用HTTP Basic驗證 279

12.4.3 登出配置 279

 

第13章 學點Spring其他的技術 282

13.1 異步線程池 282

13.1.1 定義線程池和開啟異步可用 283

13.1.2 異步實例 284

13.2 異步消息—RabbitMQ 285

13.3 定時任務 289

 

第14章 實踐一下—搶購商品 293

14.1 設計與開發 293

14.1.1 數據庫表設計 293

14.1.2 使用MyBatis開發持久層 294

14.1.3 使用Spring開發業務層和控制層 297

14.1.4 測試和配置 299

14.2 高並發開發 301

14.2.1 超發現象 301

14.2.2 悲觀鎖 303

14.2.3 樂觀鎖 304

 

第15章 打包、測試、監控、預先編譯和容器部署 310

15.1 打包和運行 310

15.1.1 打包項目 310

15.1.2 運行項目 311

15.1.3 熱部署 314

15.2 測試 315

15.2.1 構建測試類 316

15.2.2 使用隨機埠和REST風格測試 317

15.2.3 Mock測試 317

15.3 Actuator監控端點 319

15.4 HTTP監控 320

15.4.1 查看敏感信息 321

15.4.2 shutdown端點 323

15.4.3 配置端點 324

15.4.4 自定義端點 326

15.4.5 健康指標項 328

15.5 JMX監控 331

15.6 預先編譯 332

15.6.1 搭建GraalVM環境 333

15.6.2 創建項目 335

15.6.3 生成和運行原生文件 336

15.7 部署到Docker容器中 337

 

第16章 Spring Cloud Alibaba微服務開發 339

16.1 服務治理—Alibaba Nacos 342

16.1.1 下載、安裝、配置和啟動Nacos 342

16.1.2 服務發現 343

16.1.3 搭建Nacos集群 350

16.2 服務調用 352

16.2.1 客戶端負載均衡 353

16.2.2 OpenFeign聲明式服務調用 356

16.3 容錯機制—Spring Cloud Alibaba Sentinel 359

16.3.1 設置埋點 360

16.3.2 Sentinel控制台 361

16.3.3 流控 363

16.3.4 熔斷 364

16.3.5 在OpenFeign中使用Sentinel 371

16.4 API網關—Spring Cloud Gateway 372

16.4.1 Gateway的工作原理 374

16.4.2 配置路由規則 375

16.4.3 過濾器 376

16.4.4 使用Sentinel管控Gateway 383

 

附錄 Spring Boot知識點補充 387

A.1 Java 8和之後版本的新語法 387

A.1.1 Lambda表達式 387

A.1.2 本地變量類型推斷 387

A.1.3 switch語句的改善 388

A.1.4 文本塊 388

A.1.5 緊湊聲明類的關鍵字record 389

A.1.6 instanceof語法的改善 390

A.2 選擇內嵌服務器 391

A.3 修改商標 391