內容簡介
本書是一本經典而實用的暢銷Spring 學習指南。
第5 版涵蓋了Spring 5.0 和Spring Boot 2.0 里程碑式的更新。全書分為5 個部分,共19 章。第1 部分(第1~5 章)涵蓋了構建Spring 套用的基礎話題。第2 部分(第6~9章)討論如何將Spring 套用與其他套用進行集成。第3 部分(第10~12 章)探討Spring對反應式編程提供的全新支持。第4 部分(第13~15 章)拆分單體套用模型,介紹SpringCloud 和微服務開發。第5 部分(第16~19 章)討論如何為套用投入生產環境做準備以及如何進行部署。
本書既適合剛開始學習Spring Boot 和Spring 框架的Java 開發人員快速上手,也適合經驗豐富的Spring 開發人員學習Spring 的新特性,尤其適用於企業級Java 開發人員。
圖書目錄
第 1 部分 Spring 基礎
第 1 章 Spring 起步 3
1.1 什麼是Spring 4
1.2 初始化Spring 套用 6
1.2.1 使用Spring Tool Suite
初始化Spring 項目 7
1.2.2 檢查Spring 項目的
結構 10
1.3 編寫Spring 套用 16
1.3.1 處理Web 請求 16
1.3.2 定義視圖 17
1.3.3 測試控制器 18
1.3.4 構建和運行套用 20
1.3.5 了解Spring Boot DevTools 21
1.3.6 回顧一下 23
1.4 俯瞰Spring 風景線 24
1.4.1 Spring 核心框架 24
1.4.2 Spring Boot 25
1.4.3 Spring Data 25
1.4.4 Spring Security 25
1.4.5 Spring Integration 和Spring
Batch 26
1.4.6 Spring Cloud 26
1.5 小結 26
第 2 章 開發Web 套用 27
2.1 展現信息 27
2.1.1 構建領域類 28
2.1.2 創建控制器類 30
2.1.3 設計視圖 33
2.2 處理表單提交 37
2.3 校驗表單輸入 43
2.3.1 聲明校驗規則 43
2.3.2 在表單綁定的時候執行
校驗 45
2.3.3 展現校驗錯誤 46
2.4 使用視圖控制器 48
2.5 選擇視圖模板庫 49
2.6 小結 52
第3 章 使用數據 53
3.1 使用JDBC 讀取和寫入
數據 53
3.1.1 調整領域對象以適應
持久化 55
3.1.2 使用JdbcTemplate 56
3.1.3 定義模式和預載入數據 61
3.1.4 插入數據 63
3.2 使用Spring Data JPA 持久
化數據 72
3.2.1 添加Spring Data JPA 到
項目中 72
3.2.2 將領域對象標註為實體 73
3.2.3 聲明JPA repository 76
3.2.4 自定義JPA repository 77
3.3 小結 80
第4 章 保護Spring 81
4.1 啟用Spring Security 81
4.2 配置Spring Security 83
4.2.1 基於記憶體的用戶存儲 85
4.2.2 基於JDBC 的用戶存儲 86
4.2.3 以LDAP 作為後端的
用戶存儲 89
4.2.4 自定義用戶認證 92
4.3 保護Web 請求 100
4.3.1 保護請求 100
4.3.2 創建自定義的登錄頁 103
4.3.3 退出 105
4.3.4 防止跨站請求偽造 106
4.4 了解用戶是誰 107
4.5 小結 109
第5 章 使用配置屬性 111
5.1 細粒度的自動配置 112
5.1.1 理解Spring 的環境抽象 112
5.1.2 配置數據源 114
5.1.3 配置嵌入式伺服器 115
5.1.4 配置日誌 116
5.1.5 使用特定的屬性值 118
5.2 創建自己的配置屬性 118
5.2.1 定義配置屬性的持有者 120
5.2.2 聲明配置屬性元數據 123
5.3 使用profile 進行配置 125
5.3.1 定義特定profile 的屬性 126
5.3.2 激活profile 127
5.3.3 使用profile 條件化地創建
bean 128
5.4 小結 129
第2部分 Spring 集成
第6 章 創建REST 服務 133
6.1 編寫RESTful 控制器 134
6.1.1 從伺服器中檢索數據 136
6.1.2 傳送數據到伺服器端 140
6.1.3 在伺服器上更新數據 142
6.1.4 刪除伺服器上的數據 144
6.2 啟用超媒體 145
6.2.1 添加超連結 147
6.2.2 創建資源裝配器 149
6.2.3 命名嵌套式的關聯關係 154
6.3 啟用數據後端服務 155
6.3.1 調整資源路徑和關係
名稱 157
6.3.2 分頁和排序 159
6.3.3 添加自定義的端點 160
6.3.4 為Spring Data 端點添加
自定義的超連結 162
6.4 小結 163
第7 章 消費REST 服務 165
7.1 使用RestTemplate 消費
REST 端點 166
7.1.1 GET 資源 167
7.1.2 PUT 資源 169
7.1.3 DELETE 資源 169
7.1.4 POST 資源 169
7.2 使用Traverson 導航
REST API 170
7.3 小結 172
第8 章 傳送異步訊息 173
8.1 使用JMS 傳送訊息 174
8.1.1 搭建JMS 環境 174
8.1.2 使用JmsTemplate 傳送
訊息 176
8.1.3 接收JMS 訊息 183
8.2 使用RabbitMQ 和
AMQP 186
8.2.1 添加RabbitMQ 到
Spring 中 188
8.2.2 通過RabbitTemplate 傳送
訊息 189
8.2.3 接收來自RabbitMQ 的
訊息 192
8.3 使用Kafka 的訊息 196
8.3.1 為Spring 搭建支持Kafka
訊息的環境 197
8.3.2 通過KafkaTemplate 傳送
訊息 198
8.3.3 編寫Kafka 監聽器 200
8.4 小結 201
第9 章 Spring 集成 203
9.1 聲明一個簡單的
集成流 204
9.1.1 使用XML 定義集成流 205
9.1.2 使用Java 配置集成流 207
9.1.3 使用Spring Integration 的
DSL 配置 209
9.2 Spring Integration 功能
概覽 210
9.2.1 訊息通道 211
9.2.2 過濾器 212
9.2.3 轉換器 213
9.2.4 路由器 214
9.2.5 切分器 216
9.2.6 服務激活器 218
9.2.7 網關 220
9.2.8 通道適配器 221
9.2.9 端點模組 223
9.3 創建Email 集成流 224
9.4 小結 229
第3部分 反應式Spring
第 10 章 理解反應式編程 233
10.1 反應式編程概覽 234
10.2 初識Reactor 237
10.2.1 繪製反應式流圖 238
10.2.2 添加Reactor 依賴 239
10.3 使用常見的反應式
操作 240
10.3.1 創建反應式類型 240
10.3.2 組合反應式類型 244
10.3.3 轉換和過濾反應式流 248
10.3.4 在反應式類型上執行邏輯
操作 258
10.4 小結 259
第 11 章 開發反應式API 261
11.1 使用Spring WebFlux 261
11.1.1 Spring WebFlux 簡介 262
11.1.2 編寫反應式控制器 264
11.2 定義函式式請求處
理器 268
11.3 測試反應式控制器 271
11.3.1 測試GET 請求 271
11.3.2 測試POST 請求 274
11.3.3 使用實時伺服器進行
測試 275
11.4 反應式消費
REST API 276
11.4.1 獲取資源 277
11.4.2 傳送資源 279
11.4.3 刪除資源 280
11.4.4 處理錯誤 280
11.4.5 交換請求 282
11.5 保護反應式Web API 283
11.5.1 配置反應式Web 套用的
安全性 284
11.5.2 配置反應式的用戶詳情
服務 285
11.6 小結 287
第 12 章 反應式持久化數據 289
12.1 理解Spring Data 的
反應式概況 290
12.1.1 Spring Data 反應式本
質論 290
12.1.2 反應式和非反應式類型
之間的轉換 291
12.1.3 開發反應式repository 292
12.2 使用反應式的
Cassandra repository 293
12.2.1 啟用Spring Data
Cassandra 293
12.2.2 理解Cassandra 的數據
模型 296
12.2.3 將領域對象映射為Cassandra
持久化 296
12.2.4 編寫反應式
Cassandra repository 301
12.3 編寫反應式的
MongoDB repository 304
12.3.1 啟用Spring Data
MongoDB 304
12.3.2 將領域對象映射為
文檔 306
12.3.3 編寫反應式的MongoDB
repository 接口 309
12.4 小結 312
第4 部分 雲原生Spring
第 13 章 註冊和發現服務 315
13.1 思考微服務 316
13.2 搭建服務註冊中心 318
13.2.1 配置Eureka 321
13.2.2 擴展Eureka 324
13.3 註冊和發現服務 325
13.3.1 配置Eureka 客戶端
屬性 326
13.3.2 消費服務 328
13.4 小結 332
第 14 章 管理配置 333
14.1 共享配置 334
14.2 運行配置伺服器 335
14.2.1 啟用配置伺服器 336
14.2.2 填充配置倉庫 339
14.3 消費共享配置 341
14.4 提供特定套用和profile 的
屬性 343
14.4.1 提供特定套用的屬性 343
14.4.2 提供來自profile 的
屬性 344
14.5 保持配置屬性的
私密性 346
14.5.1 在Git 中加密屬性 346
14.5.2 在Vault 中存儲私密
信息 349
14.6 在運行時刷新配置
屬性 353
14.6.1 手動刷新配置屬性 354
14.6.2 自動刷新配置屬性 356
14.7 小結 363
第 15 章 處理失敗和延遲 365
15.1 理解斷路器模式 365
15.2 聲明斷路器 367
15.2.1 緩解延遲 369
15.2.2 管理斷路器的閾值 371
15.3 監控失敗 372
15.3.1 Hystrix dashboard
簡介 373
15.3.2 理解Hystrix 的執行緒
模型 375
15.4 聚合多個Hystrix 流 377
15.5 小結 378
第5 部分 部署Spring
第 16 章 使用Spring Boot
Actuator 381
16.1 Actuator 概覽 382
16.1.1 配置Actuator 的基礎
路徑 383
16.1.2 啟用和禁用Actuator
端點 383
16.2 消費Actuator 端點 384
16.2.1 獲取套用的基礎信息 385
16.2.2 查看配置細節 388
16.2.3 查看套用的活動 396
16.2.4 獲取套用的指標 398
16.3 自定義Actuator 401
16.3.1 為“/info”端點提供信息 401
16.3.2 實現自定義的健康
指示器 405
16.3.3 註冊自定義的指標 407
16.3.4 創建自定義的端點 408
16.4 保護Actuator 411
16.5 小結 413
第 17 章 管理Spring 415
17.1 使用Spring Boot
Admin 415
17.1.1 創建Admin 伺服器 416
17.1.2 註冊Admin 客戶端 418
17.2 探索Admin 伺服器 421
17.2.1 查看套用基本的健康狀況
和信息 421
17.2.2 觀察核心指標 423
17.2.3 探查環境屬性 424
17.2.4 查看和設定日誌
級別 424
17.2.5 監控執行緒 425
17.2.6 跟蹤HTTP 請求 426
17.3 保護Admin 伺服器 428
17.3.1 為Admin 伺服器啟用登錄
功能 428
17.3.2 為Actuator 啟用認證 429
17.4 小結 429
第 18 章 使用JMX 監控
Spring 431
18.1 使用Actuator MBean 431
18.2 創建自己的MBean 434
18.3 傳送通知 436
18.4 小結 437
第 19 章 部署Spring 439
19.1 權衡各種部署方案 440
19.2 構建和部署WAR
檔案 441
19.3 推送JAR 檔案到Cloud
Foundry 上 443
19.4 在Docker 容器中運行
Spring Boot 445
19.5 以終為始 449
19.6 小結 449
附錄 初始化Spring 套用 451
A.1 使用Spring Tool Suite
初始化項目 451
A.2 使用IntelliJ IDEA 初始化
項目 454
A.3 使用NetBeans 初始化
項目 457
A.4 在start.spring.io 中初始化
項目 459
A.5 使用命令行初始化
項目 462
A.5.1 curl 和Initializr API 462
A.5.2 Spring Boot 命令行
接口 464
A.6 使用元框架創建Spring
套用 465
A.7 構建和運行項目 465