精通 Spring:Java Web 開發與 Spring Boot 高級功能 (Mastering Spring 5, 2/e)

精通 Spring:Java Web 開發與 Spring Boot 高級功能 (Mastering Spring 5, 2/e)

作者: [印]蘭加·拉奧·卡拉南 石華耀 熊珅譯
出版社: 人民郵電
出版在: 2020-06-01
ISBN-13: 9787115539441
ISBN-10: 7115539448
裝訂格式: 平裝
總頁數: 340 頁





內容描述


本書是使用Spring進行Java Web開發的指導手冊,
介紹了Spring Framework的演變——從解決可測試應用程序的問題到在雲端構建分佈式應用程序。
本書介紹了Spring 5.0的新增功能,講解如何使用Spring MVC構建應用程序,
然後全面闡釋如何使用Spring Framework構建並擴展微服務,以及如何開發和部署雲應用程序。
讀者會瞭解應用程序架構的進化過程——從單體架構到圍繞微服務構建的架構。
此外,本書還介紹了Spring Boot的高級功能,並通過強大的示例演示這些功能。


目錄大綱


第1章向Spring Framework 5.0進化1
1.1 Spring Framework 1
1.2 Spring Framework為什麼流行2
1.2.1簡化了單元測試2
1.2.2減少了銜接代碼3
1.2.3架構靈活性4
1.2.4與時俱進4
1.3 Spring模塊5
1.3.1 Spring核心容器5
1.3.2橫切關注點5
1.3.3 Web層6
1.3 .4業務層6
1.3.5數據層6
1.4 Spring項目6
1.4.1 Spring Boot 7
1.4.2 Spring Cloud 7
1.4.3 Spring Data 8
1.4.4 Spring Batch 8
1.4.5 Spring Security 8
1.4.6 Spring HATEOAS 9
1.5 Spring Framework 5.0中的新增功能9
1.5.1基準升級10
1.5.2 JDK 9運行時兼容性10
1.5.3在Spring Framework代碼中使用JDK 8功能11
1.5.4反應式編程支持11
1.5.5函數式Web框架11
1.5.6 Java通過Jigsaw實現模塊化12
1.5.7 Kotlin支持13
1.5.8已停用的功能14
1.6 Spring Boot 2.0的新增功能14
1.7小結15
第2章依賴注入16
2.1了解依賴注入16
2.1.1了解依賴項17
2.1.2 Spring IoC容器19
2.1.3使用模擬對象進行單元測試26
2.1.4容器託管bean 28
2.1.5依賴注入類型28
2.1.6 Spring bean作用域30
2.1.7 Java與XML配置30
2.1.8 @Autowired註解詳解31
2.1.9其他重要的Spring註解32
2.1.10上下文和依賴注入32
2.2小結33
第3章使用Spring MVC構建Web應用程序34
3.1 Java Web應用程序架構34
3.1.1 Model 1架構35
3.1.2 Model 2架構35
3.1.3 Model 2前端控制器架構36
3.2基本流37
3.2.1基本設置38
3.2.2流1——不包含視圖的簡單控制器流39
3. 2.3流2——包含視圖的簡單控制器流42
3.2.4流3——控制器通過模型重定向到視圖45
3.2.5流4——控制器通過ModelAndView重定向到視圖47
3.2.6流5——重定向到包含表單的視圖的控制器48
3.2.7流6——在上一個流中添加驗證功能51
3.3 Spring MVC概述54
3.3.1重要特性54
3.3.2工作機制55
3.4 Spring MVC背後的重要概念56
3.4.1 RequestMapping 56
3.4.2視圖解析58
3.4.3處理程序映射和攔截器59
3.4.4模型屬性61
3.4.5會話屬性62
3.4.6 @InitBinder註解63
3.4.7 @ControllerAdvice註解63
3.5 Spring MVC——高級功能64
3.5.1異常處理64
3.5.2國際化66
3.5.3對Spring控制器進行集成測試68
3.5.4提供靜態資源69
3.5.5集成Spring MVC與Bootstrap 71
3.6 Spring Security 72
3.6.1添加Spring Security依賴項73
3.6.2配置過濾器以攔截所有請求73
3.6.3註銷74
3.7小結75
第4章向微服務和雲原生應用程序進化76
4.1使用Spring的典型Web應用程序架構77
4.1.1 Web層77
4.1.2業務層78
4.1. 3數據層78
4.1.4集成層79
4.1.5橫切關注點79
4.2 Spring解決的問題79
4.2.1鬆散耦合和可測試性80
4.2.2銜接代碼80
4.2.3輕量級架構80
4.2.4架構靈活性80
4.2.5簡化橫切關注點的實現過程81
4.2.6免費的設計模式81
4.3應用程序開發目標81
4.3.1速度82
4.3.2安全保障83
4.3.3可擴展性84
4.4單體應用面臨的挑戰84
4.4.1漫長的發布週期85
4.4.2難以擴展85
4.4.3適應新技術85
4.4.4適應新方法85
4.4.5適應現代化開發實踐85
4.5了解微服務85
4.5.1什麼是微服務86
4. 5.2微服務架構86
4.5.3微服務的特點88
4.5.4微服務的優勢91
4.5.5微服務面臨的挑戰92
4.6雲原生應用程序94
4.7 Spring項目98
4.7.1 Spring Boot 98
4.7.2 Spring Cloud 99
4.8小結99
第5章使用Spring Boot構建微服務100
5.1什麼是Spring Boot 100
5.1.1快速構建微服務器原型101
5.1.2主要目標101
5.1.3非功能性特性102
5.2 Spring Boot Hello World 102
5.2.1配置spring-boot-starter-parent 102
5.2.2用所需的starter項目配置pom.xml 105
5.2.3配置spring-boot-maven-plugin 106
5.2.4創建第一個Spring Boot啟動類107
5.2.5運行Hello World應用程序.......108
5.2.6自動配置110
5.2.7 starter項目113
5.3什麼是REST 114
5.4首個REST服務115
5.4.1返回字符串的簡單方法116
5.4.2返回對象的簡單REST方法118
5.4.3包含路徑變量的GET方法120
5.5創建待辦事項資源121
5.5.1請求方法、操作和URI 122
5.5.2 bean和服務122
5.5.3檢索待辦事項列表124
5.5.4檢索特定待辦事項的詳細信息126
5.5.5添加待辦事項128
5.6 Spring Initializr 132
5.7自動配置概述136
5.8小結138
第6章擴展微服務139
6.1異常處理139
6.2 HATEOAS 144
6.3驗證147
6.3.1對控制器方法啟用驗證148
6.3.2定義bean驗證148
6.3.3驗證功能單元測試149
6.4編寫REST服務文檔149
6.5使用Spring Security確保REST服務的安全156
6.5.1添加Spring Security starter 157
6.5.2基本身份驗證157
6.5.3 OAuth 2身份驗證159
6.6國際化164
6.7緩存166
6.7 .1 spring-boot-startercache 166
6.7.2啟用緩存167
6.7.3緩存數據167
6.7.4 JSR-107緩存註解167
6.8小結168
第7章Spring Boot的高級功能169
7.1配置外部化169
7.1.1通過application.properties自定義框架170
7.1.2 application.properties中的自定義屬性173
7.1.3配置文件176
7.1.4其他定義應用程序配置值的選項178
7.1.5 YAML配置178
7.2嵌入式服務器179
7.2.1切換到Jetty和Undertow 182
7.2.2構建WAR文件183
7.3開發者工具183
7.4 Spring Boot Actuator 184
7.4.1 HAL瀏覽器185
7.4.2配置屬性187
7.4.3環境細節188
7.4.4運行狀況189
7.4.5映射189
7.4.6 bean 190
7.4.7度量191
7.4.8自動配置193
7.4.9調試194
7.5部署應用程序到雲端194
7.6小結196
第8章Spring Data 197
8.1背景信息——數據存儲197
8.2 Spring Data 198
8.2.1 Spring Data Commons 199
8.2.2 Spring Data JPA 200
8.3 Spring Data Rest 212
8.3.1 GET方法213
8.3.2 POST方法214
8.3.3搜索資源215
8 .4大數據215
8.5小結217
第9章Spring Cloud 218
9.1 Spring Cloud簡介218
9.2演示微服務設置220
9.2.1微服務A 220
9.2.2服務消費方223
9 .3集中式微服務配置225
9.3.1問題陳述225
9.3.2解決方案226
9.3.3選項226
9.3.4 Spring Cloud Config 227
9.4 Spring Cloud Bus 233
9.4. 1 Spring Cloud Bus需求233
9.4.2使用Spring Cloud Bus傳播配置更改233
9.4.3實現234
9.5聲明式REST客戶端——Feign 235
9.6負載均衡237
9.7名稱服務器240
9.8名稱服務器的工作機制240
9.8.1選項241
9.8.2實現241
9.9 API網關245
9.10分佈式跟踪250
9.10.1分佈式跟踪選項250
9.10.2實現Spring Cloud Sleuth和Zipkin 251
9.11 Hystrix——容錯256
9.12小結257
第10章Spring Cloud Data Flow 258
10.1基於消息的異步通信258
10.2用於異步消息傳遞的Spring項目260
10.2.1 Spring Integration 261
10.2.2 Spring Cloud Stream 261
10.2.3 Spring Cloud Data Flow 262
10.3 Spring Cloud Stream 263
10.3.1 Spring Cloud Stream架構263
10.3.2事件處理——股票交易示例264
10.4 Spring Cloud Data Flow 269
10 .4.1高級架構270
10.4.2實現Spring Cloud Data Flow 271
10.4.3 Spring Cloud Data Flow REST API 280
10.5 Spring Cloud Task 281
10.6小結282
第11章反應式編程283
11.1反應式宣言283
11.2反應式用例——股價頁面285
11.2.1傳統方法285
11.2.2反應式方法286
11.2.3傳統與反應式方法比較286
11.3 Java反應式編程287
11.3.1反應式流287
11.3.2 Reactor 288
11.3.3 Spring Web Reactive 292
11.3.4反應式數據庫298
11.4小結302
第12章Spring最佳實踐303
12.1 Maven標準目錄佈局303
12.2分層架構304
12.3異常處理306
12.3.1 Spring的異常處理方法307
12.3.2推薦的處理方法307
12.4確保簡化Spring配置308
12.4.1在ComponentScan中使用basePackageClasses屬性308
12.4.2不在架構引用中使用版本號308
12.4.3強制性依賴項首選構造函數注入而不是setter注入309
12.5管理Spring項目的依賴項版本309
12.6單元測試311
12.6.1業務層311
12.6.2 Web層312
12.6.3數據層312
12.6.4其他最佳實踐313
12.7集成測試313
12.7.1 Spring Session 314
12.7.2示例315
12.8緩存316
12.8.1添加Spring Boot Starter Cache依賴項317
12 .8.2添加緩存註解317
12.9日誌記錄317
12.9.1 Logback 317
12.9.2 Log4j2 318
12.9.3獨立於框架的配置319
12.10小結319
第13章在Spring中使用Kotlin 320
13.1 Kotlin 320
13.2 Kotlin與Java 321
13.2.1變量和類型推斷321
13.2.2變量和不變性322
13.2.3類型系統322
13.2.4函數323
13.2.5數組324
13.2.6集合324
13.2.7未受檢異常325
13.2.8數據類326
13.3在Eclipse中創建Kotlin項目326
13.3.1 Kotlin插件326
13.3.2創建Kotlin項目327
13.3.3創建Kotlin類329
13.3.4運行Kotlin類330
13.4使用Kotlin創建Spring Boot項目331
13.4.1依賴項和插件332
13.4.2 Spring Boot應用程序類333
13.4.3 Spring Boot應用程序測試類334
13.5使用Kotlin實現REST服務335
13.5.1返回字符串的簡單方法335
13.5.2返回對象的簡單REST方法337
13.5.3包含路徑變量的GET方法338
13.6小結340


作者介紹


Ranga Rao Karanam
高級架構師、培訓課程講師,在Java開發方面有15年以上的工作經驗。
目前在Udemy有約22萬名學生,在YouTube有約6萬位視頻訂閱者。
他在個人網站in28Minutes提供短小精悍的視頻課,
教你使用Spring、Spring Boot和Spring Cloud等工具高效開發和部署Java企業級應用程序和微服務。

【譯者簡介】
石華耀
IT/本地化資深自由翻譯,擅長軟硬件、網站本地化、
各種技術文檔翻譯,曾參與Microsoft、Lenovo、Oracle、
Cisco、ICAAN等企業及組織機構的大型項目。
譯著包括《IDA Pro權威指南》(及第2版)、《黑客攻防技術寶典:Web實戰篇》(及第2版)等。
聯繫郵箱:shy1639@outlook.com。
熊珅
三峽大學2018屆碩士研究生,熱衷於英語學習與翻譯,
多次參加英語演講比賽和英語翻譯大賽,並取得一定成績。




相關書籍

Real World Haskell (Paperback)

作者 Bryan O'Sullivan John Goerzen Don Stewart

2020-06-01

Visual C# 2019 程式設計 16堂課

作者 數位新知

2020-06-01

Blockchain with Hyperledger Fabric, Second Edition: Build decentralized applications using Hyperledger Fabric 2

作者 Gaur Nitin Desrosiers Luc Ramakrishna Venkatraman

2020-06-01