深入淺出Spring Boot 3.x
楊開振
買這商品的人也買了...
-
$580$452 -
$607Effective Java, 3/e (簡體中文版)
-
$834$792 -
$403Python 自動化測試入門與進階實戰
-
$571精通 Python 自動化編程
-
$580$458 -
$407OpenCV 圖像處理入門與實踐
-
$654$621 -
$479$455 -
$948$901 -
$980$774 -
$1,080$713 -
$600$450 -
$714$678 -
$454學習 Spring Boot 3.0
-
$356React Native 移動開發實戰, 3/e
-
$539$512 -
$490$387 -
$291區塊鏈應用開發實戰 (Hyperledger Fabric)
-
$900$855 -
$474$450 -
$1,480$1,169 -
$658Django 5 Web 應用開發實戰
-
$534$507 -
$839$797
相關主題
商品描述
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