本書是一本經(jīng)典而實(shí)用的暢銷Spring 學(xué)習(xí)指南。
第5 版涵蓋了Spring 5.0 和Spring Boot 2.0 里程碑式的更新。全書分為5 個(gè)部分,共19 章。第1 部分(第1~5 章)涵蓋了構(gòu)建Spring 應(yīng)用的基礎(chǔ)話題。第2 部分(第6~9章)討論如何將Spring 應(yīng)用與其他應(yīng)用進(jìn)行集成。第3 部分(第10~12 章)探討Spring對反應(yīng)式編程提供的全新支持。第4 部分(第13~15 章)拆分單體應(yīng)用模型,介紹SpringCloud 和微服務(wù)開發(fā)。第5 部分(第16~19 章)討論如何為應(yīng)用投入生產(chǎn)環(huán)境做準(zhǔn)備以及如何進(jìn)行部署。
本書既適合剛開始學(xué)習(xí)Spring Boot 和Spring 框架的Java 開發(fā)人員快速上手,也適合經(jīng)驗(yàn)豐富的Spring 開發(fā)人員學(xué)習(xí)Spring 的新特性,尤其適用于企業(yè)級Java 開發(fā)人員。
全球有超過100 000名開發(fā)者使用本書來學(xué)習(xí)Spring
暢銷經(jīng)典Spring技術(shù)圖書,針對Spring 5全面升級
Spring框架能夠讓Java開發(fā)人員的工作更加輕松。Spring 5的新特性通過微服務(wù)、反應(yīng)式開發(fā)進(jìn)一步提升了生產(chǎn)效率。隨著與Spring Boot的全面集成,我們現(xiàn)在用最少的配置就可以啟動復(fù)雜的項(xiàng)目。全新升級的WebFlux框架對反應(yīng)式應(yīng)用程序提供了開箱即用的支持。
本書繼續(xù)以眾所周知的清晰風(fēng)格,介紹了Spring 5的核心特性。你將親自動手,逐步構(gòu)建出一個(gè)安全的、以數(shù)據(jù)庫作為支撐的Web應(yīng)用。在這個(gè)過程中,你還將會探索反應(yīng)式編程、微服務(wù)、服務(wù)發(fā)現(xiàn)、RESTful API、部署并掌握專家級的最佳實(shí)踐。無論你是Spring的初學(xué)者,還是想要升級到Spring 5,本書都不容錯過。
本書包含一下內(nèi)容
·構(gòu)建反應(yīng)式應(yīng)用;
· 使用Spring MVC構(gòu)建Web應(yīng)用和RESTful Web服務(wù);
·使用Spring Security保護(hù)應(yīng)用;
· Spring 5新特性。
專家推薦
《Spring實(shí)戰(zhàn)(第5版)》進(jìn)行了全面的升級,兼顧了實(shí)戰(zhàn)指南和綜合理論。
——Daniel Vaughan
European Bioinformatics Institute
學(xué)習(xí)Spring框架的很棒的參考指南。
——Colin Joyce,Cisco
本書包含了你需要掌握的所有關(guān)于Spring的知識,并且涵蓋了如何構(gòu)建云原生應(yīng)用。
—— David Witherspoon,Parsons
本書堪稱Spring開發(fā)人員的“瑞士軍刀”。
——Riccardo Noviello
Nuvio Software Solutions
克雷格·沃斯(Craig Walls)是Pivotal的首席軟件工程師、暢銷書作者、Spring框架的熱情支持者,經(jīng)常在各種技術(shù)會議上發(fā)表演講。
第 1 部分 Spring 基礎(chǔ)
第 1 章 Spring 起步 3
1.1 什么是Spring 4
1.2 初始化Spring 應(yīng)用 6
1.2.1 使用Spring Tool Suite
初始化Spring 項(xiàng)目 7
1.2.2 檢查Spring 項(xiàng)目的
結(jié)構(gòu) 10
1.3 編寫Spring 應(yīng)用 16
1.3.1 處理Web 請求 16
1.3.2 定義視圖 17
1.3.3 測試控制器 18
1.3.4 構(gòu)建和運(yùn)行應(yīng)用 20
1.3.5 了解Spring Boot DevTools 21
1.3.6 回顧一下 23
1.4 俯瞰Spring 風(fēng)景線 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 小結(jié) 26
第 2 章 開發(fā)Web 應(yīng)用 27
2.1 展現(xiàn)信息 27
2.1.1 構(gòu)建領(lǐng)域類 28
2.1.2 創(chuàng)建控制器類 30
2.1.3 設(shè)計(jì)視圖 33
2.2 處理表單提交 37
2.3 校驗(yàn)表單輸入 43
2.3.1 聲明校驗(yàn)規(guī)則 43
2.3.2 在表單綁定的時(shí)候執(zhí)行
校驗(yàn) 45
2.3.3 展現(xiàn)校驗(yàn)錯誤 46
2.4 使用視圖控制器 48
2.5 選擇視圖模板庫 49
2.6 小結(jié) 52
第3 章 使用數(shù)據(jù) 53
3.1 使用JDBC 讀取和寫入
數(shù)據(jù) 53
3.1.1 調(diào)整領(lǐng)域?qū)ο笠赃m應(yīng)
持久化 55
3.1.2 使用JdbcTemplate 56
3.1.3 定義模式和預(yù)加載數(shù)據(jù) 61
3.1.4 插入數(shù)據(jù) 63
3.2 使用Spring Data JPA 持久
化數(shù)據(jù) 72
3.2.1 添加Spring Data JPA 到
項(xiàng)目中 72
3.2.2 將領(lǐng)域?qū)ο髽?biāo)注為實(shí)體 73
3.2.3 聲明JPA repository 76
3.2.4 自定義JPA repository 77
3.3 小結(jié) 80
第4 章 保護(hù)Spring 81
4.1 啟用Spring Security 81
4.2 配置Spring Security 83
4.2.1 基于內(nèi)存的用戶存儲 85
4.2.2 基于JDBC 的用戶存儲 86
4.2.3 以LDAP 作為后端的
用戶存儲 89
4.2.4 自定義用戶認(rèn)證 92
4.3 保護(hù)Web 請求 100
4.3.1 保護(hù)請求 100
4.3.2 創(chuàng)建自定義的登錄頁 103
4.3.3 退出 105
4.3.4 防止跨站請求偽造 106
4.4 了解用戶是誰 107
4.5 小結(jié) 109
第5 章 使用配置屬性 111
5.1 細(xì)粒度的自動配置 112
5.1.1 理解Spring 的環(huán)境抽象 112
5.1.2 配置數(shù)據(jù)源 114
5.1.3 配置嵌入式服務(wù)器 115
5.1.4 配置日志 116
5.1.5 使用特定的屬性值 118
5.2 創(chuàng)建自己的配置屬性 118
5.2.1 定義配置屬性的持有者 120
5.2.2 聲明配置屬性元數(shù)據(jù) 123
5.3 使用profile 進(jìn)行配置 125
5.3.1 定義特定profile 的屬性 126
5.3.2 激活profile 127
5.3.3 使用profile 條件化地創(chuàng)建
bean 128
5.4 小結(jié) 129
第2部分 Spring 集成
第6 章 創(chuàng)建REST 服務(wù) 133
6.1 編寫RESTful 控制器 134
6.1.1 從服務(wù)器中檢索數(shù)據(jù) 136
6.1.2 發(fā)送數(shù)據(jù)到服務(wù)器端 140
6.1.3 在服務(wù)器上更新數(shù)據(jù) 142
6.1.4 刪除服務(wù)器上的數(shù)據(jù) 144
6.2 啟用超媒體 145
6.2.1 添加超鏈接 147
6.2.2 創(chuàng)建資源裝配器 149
6.2.3 命名嵌套式的關(guān)聯(lián)關(guān)系 154
6.3 啟用數(shù)據(jù)后端服務(wù) 155
6.3.1 調(diào)整資源路徑和關(guān)系
名稱 157
6.3.2 分頁和排序 159
6.3.3 添加自定義的端點(diǎn) 160
6.3.4 為Spring Data 端點(diǎn)添加
自定義的超鏈接 162
6.4 小結(jié) 163
第7 章 消費(fèi)REST 服務(wù) 165
7.1 使用RestTemplate 消費(fèi)
REST 端點(diǎn) 166
7.1.1 GET 資源 167
7.1.2 PUT 資源 169
7.1.3 DELETE 資源 169
7.1.4 POST 資源 169
7.2 使用Traverson 導(dǎo)航
REST API 170
7.3 小結(jié) 172
第8 章 發(fā)送異步消息 173
8.1 使用JMS 發(fā)送消息 174
8.1.1 搭建JMS 環(huán)境 174
8.1.2 使用JmsTemplate 發(fā)送
消息 176
8.1.3 接收J(rèn)MS 消息 183
8.2 使用RabbitMQ 和
AMQP 186
8.2.1 添加RabbitMQ 到
Spring 中 188
8.2.2 通過RabbitTemplate 發(fā)送
消息 189
8.2.3 接收來自RabbitMQ 的
消息 192
8.3 使用Kafka 的消息 196
8.3.1 為Spring 搭建支持Kafka
消息的環(huán)境 197
8.3.2 通過KafkaTemplate 發(fā)送
消息 198
8.3.3 編寫Kafka 監(jiān)聽器 200
8.4 小結(jié) 201
第9 章 Spring 集成 203
9.1 聲明一個(gè)簡單的
集成流 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 轉(zhuǎn)換器 213
9.2.4 路由器 214
9.2.5 切分器 216
9.2.6 服務(wù)激活器 218
9.2.7 網(wǎng)關(guān) 220
9.2.8 通道適配器 221
9.2.9 端點(diǎn)模塊 223
9.3 創(chuàng)建Email 集成流 224
9.4 小結(jié) 229
第3部分 反應(yīng)式Spring
第 10 章 理解反應(yīng)式編程 233
10.1 反應(yīng)式編程概覽 234
10.2 初識Reactor 237
10.2.1 繪制反應(yīng)式流圖 238
10.2.2 添加Reactor 依賴 239
10.3 使用常見的反應(yīng)式
操作 240
10.3.1 創(chuàng)建反應(yīng)式類型 240
10.3.2 組合反應(yīng)式類型 244
10.3.3 轉(zhuǎn)換和過濾反應(yīng)式流 248
10.3.4 在反應(yīng)式類型上執(zhí)行邏輯
操作 258
10.4 小結(jié) 259
第 11 章 開發(fā)反應(yīng)式API 261
11.1 使用Spring WebFlux 261
11.1.1 Spring WebFlux 簡介 262
11.1.2 編寫反應(yīng)式控制器 264
11.2 定義函數(shù)式請求處
理器 268
11.3 測試反應(yīng)式控制器 271
11.3.1 測試GET 請求 271
11.3.2 測試POST 請求 274
11.3.3 使用實(shí)時(shí)服務(wù)器進(jìn)行
測試 275
11.4 反應(yīng)式消費(fèi)
REST API 276
11.4.1 獲取資源 277
11.4.2 發(fā)送資源 279
11.4.3 刪除資源 280
11.4.4 處理錯誤 280
11.4.5 交換請求 282
11.5 保護(hù)反應(yīng)式Web API 283
11.5.1 配置反應(yīng)式Web 應(yīng)用的
安全性 284
11.5.2 配置反應(yīng)式的用戶詳情
服務(wù) 285
11.6 小結(jié) 287
第 12 章 反應(yīng)式持久化數(shù)據(jù) 289
12.1 理解Spring Data 的
反應(yīng)式概況 290
12.1.1 Spring Data 反應(yīng)式本
質(zhì)論 290
12.1.2 反應(yīng)式和非反應(yīng)式類型
之間的轉(zhuǎn)換 291
12.1.3 開發(fā)反應(yīng)式repository 292
12.2 使用反應(yīng)式的
Cassandra repository 293
12.2.1 啟用Spring Data
Cassandra 293
12.2.2 理解Cassandra 的數(shù)據(jù)
模型 296
12.2.3 將領(lǐng)域?qū)ο笥成錇镃assandra
持久化 296
12.2.4 編寫反應(yīng)式
Cassandra repository 301
12.3 編寫反應(yīng)式的
MongoDB repository 304
12.3.1 啟用Spring Data
MongoDB 304
12.3.2 將領(lǐng)域?qū)ο笥成錇?文檔 306
12.3.3 編寫反應(yīng)式的MongoDB
repository 接口 309
12.4 小結(jié) 312
第4 部分 云原生Spring
第 13 章 注冊和發(fā)現(xiàn)服務(wù) 315
13.1 思考微服務(wù) 316
13.2 搭建服務(wù)注冊中心 318
13.2.1 配置Eureka 321
13.2.2 擴(kuò)展Eureka 324
13.3 注冊和發(fā)現(xiàn)服務(wù) 325
13.3.1 配置Eureka 客戶端
屬性 326
13.3.2 消費(fèi)服務(wù) 328
13.4 小結(jié) 332
第 14 章 管理配置 333
14.1 共享配置 334
14.2 運(yùn)行配置服務(wù)器 335
14.2.1 啟用配置服務(wù)器 336
14.2.2 填充配置倉庫 339
14.3 消費(fèi)共享配置 341
14.4 提供特定應(yīng)用和profile 的
屬性 343
14.4.1 提供特定應(yīng)用的屬性 343
14.4.2 提供來自profile 的
屬性 344
14.5 保持配置屬性的
私密性 346
14.5.1 在Git 中加密屬性 346
14.5.2 在Vault 中存儲私密
信息 349
14.6 在運(yùn)行時(shí)刷新配置
屬性 353
14.6.1 手動刷新配置屬性 354
14.6.2 自動刷新配置屬性 356
14.7 小結(jié) 363
第 15 章 處理失敗和延遲 365
15.1 理解斷路器模式 365
15.2 聲明斷路器 367
15.2.1 緩解延遲 369
15.2.2 管理斷路器的閾值 371
15.3 監(jiān)控失敗 372
15.3.1 Hystrix dashboard
簡介 373
15.3.2 理解Hystrix 的線程
模型 375
15.4 聚合多個(gè)Hystrix 流 377
15.5 小結(jié) 378
第5 部分 部署Spring
第 16 章 使用Spring Boot
Actuator 381
16.1 Actuator 概覽 382
16.1.1 配置Actuator 的基礎(chǔ)
路徑 383
16.1.2 啟用和禁用Actuator
端點(diǎn) 383
16.2 消費(fèi)Actuator 端點(diǎn) 384
16.2.1 獲取應(yīng)用的基礎(chǔ)信息 385
16.2.2 查看配置細(xì)節(jié) 388
16.2.3 查看應(yīng)用的活動 396
16.2.4 獲取應(yīng)用的指標(biāo) 398
16.3 自定義Actuator 401
16.3.1 為“/info”端點(diǎn)提供信息 401
16.3.2 實(shí)現(xiàn)自定義的健康
指示器 405
16.3.3 注冊自定義的指標(biāo) 407
16.3.4 創(chuàng)建自定義的端點(diǎn) 408
16.4 保護(hù)Actuator 411
16.5 小結(jié) 413
第 17 章 管理Spring 415
17.1 使用Spring Boot
Admin 415
17.1.1 創(chuàng)建Admin 服務(wù)器 416
17.1.2 注冊Admin 客戶端 418
17.2 探索Admin 服務(wù)器 421
17.2.1 查看應(yīng)用基本的健康狀況
和信息 421
17.2.2 觀察核心指標(biāo) 423
17.2.3 探查環(huán)境屬性 424
17.2.4 查看和設(shè)置日志
級別 424
17.2.5 監(jiān)控線程 425
17.2.6 跟蹤HTTP 請求 426
17.3 保護(hù)Admin 服務(wù)器 428
17.3.1 為Admin 服務(wù)器啟用登錄
功能 428
17.3.2 為Actuator 啟用認(rèn)證 429
17.4 小結(jié) 429
第 18 章 使用JMX 監(jiān)控
Spring 431
18.1 使用Actuator MBean 431
18.2 創(chuàng)建自己的MBean 434
18.3 發(fā)送通知 436
18.4 小結(jié) 437
第 19 章 部署Spring 439
19.1 權(quán)衡各種部署方案 440
19.2 構(gòu)建和部署WAR
文件 441
19.3 推送JAR 文件到Cloud
Foundry 上 443
19.4 在Docker 容器中運(yùn)行
Spring Boot 445
19.5 以終為始 449
19.6 小結(jié) 449
附錄 初始化Spring 應(yīng)用 451
A.1 使用Spring Tool Suite
初始化項(xiàng)目 451
A.2 使用IntelliJ IDEA 初始化
項(xiàng)目 454
A.3 使用NetBeans 初始化
項(xiàng)目 457
A.4 在start.spring.io 中初始化
項(xiàng)目 459
A.5 使用命令行初始化
項(xiàng)目 462
A.5.1 curl 和Initializr API 462
A.5.2 Spring Boot 命令行
接口 464
A.6 使用元框架創(chuàng)建Spring
應(yīng)用 465
A.7 構(gòu)建和運(yùn)行項(xiàng)目 465