學透Spring 從入門到項目實戰 版權信息
- ISBN:9787115609113
- 條形碼:9787115609113 ; 978-7-115-60911-3
- 裝幀:一般膠版紙
- 冊數:暫無
- 重量:暫無
- 所屬分類:>
學透Spring 從入門到項目實戰 本書特色
適讀人群 :跟著兔子書,只要具備 Java 基礎知識,就可以迅速上手 Spring,并落地實戰項目和生產環境。1.【內容全】詳細介紹Spring Boot等10+款Spring常用組件 2.【重實戰】注重工程實現,書中的技術主題與業務開發強關聯 3.【本土化】貼近實際工作場景,涵蓋國內高頻使用的工具與組件 4.【大案例】“二進制奶茶店”分布式系統案例貫穿全書,即學即用 5.【作者強】超過15年一線開發經驗,大廠大型系統構建經驗豐富 6.【易學習】1個大案例 | 355段代碼 | 44回茶歇 | 178張表 | 59幅圖
學透Spring 從入門到項目實戰 內容簡介
本書的目標是讓大家又快又好地打包學透 Spring 技術棧,內容將涉及 Spring Framework、Spring Boot、 Spring Cloud 等 Spring 家族成員。本書分為四部分:**部分“Spring 入門”,先學習基本的 Spring IoC、AOP,隨后過渡到當下熱門的 Spring Boot ;第二部分“Spring 中的數據操作”,其中既有常規的 SQL、NoSQL 數據操作,也有進階的數據源配置和緩存抽象;第三部分“使用 Spring 開發 Web 應用”,講述 Spring MVC 細節的同時,也不放過 Web 安全與 REST ;第四部分“使用 Spring 開發微服務”,除了常規的 Spring Cloud 模塊,也會講解 Spring Cloud Alibaba。在講解具體內容的基本示例之外,書中還設計了一個貫穿主要章節的實戰案例,帶大家一步步從零開始實現一個靈活運用全書內容的項目“二進制奶茶店”。 本書重實戰、重工程現實,是業內專業人員丁雪豐親歷的有效學習路徑,匯集了作者多年的實戰經驗。跟著兔子書,只要具備 Java 基礎知識,就可以快速上手 Spring,并落地實戰項目和生產環境。
學透Spring 從入門到項目實戰 目錄
第 一部分 Spring入門
第 1章 初識 Spring2
1.1 認識 Spring 家族2
1.1.1 Spring 發展歷史2
1.1.2 Spring 家族主要成員4
1.2 編寫第 一個 Spring 程序7
1.2.1 基礎環境準備8
1.2.2 通過Spring Initializr創建工程12
1.2.3 編寫簡單的REST服務14
1.3 實戰案例說明16
1.3.1 需求描述16
1.3.2 模塊說明17
1.4 小結19
第 2章 Spring Framework中的IoC容器20
2.1 IoC容器基礎知識20
2.1.1 什么是IoC容器20
2.1.2 容器的初始化21
2.1.3 BeanFactory與ApplicationContext23
2.1.4 容器的繼承關系24
2.2 Bean基礎知識27
2.2.1 什么是Bean27
2.2.2 Bean的依賴關系27
2.2.3 Bean的三種配置方式30
2.3 定制容器與Bean的行為33
2.3.1 Bean的生命周期33
2.3.2 Aware接口的應用37
2.3.3 事件機制37
2.3.4 容器的擴展點39
2.3.5 優雅地關閉容器40
茶歇時間:Linux環境下如何關閉進程41
2.4 容器中的幾種抽象42
2.4.1 環境抽象42
2.4.2 任務抽象44
茶歇時間:該怎么配置線程池45
茶歇時間:本地調度vs.分布式調度47
2.5 小結47
第3章 Spring Framework中的AOP48
3.1 Spring中的AOP48
3.1.1 AOP的核心概念48
3.1.2 Spring AOP的實現原理49
茶歇時間:使用代理模式過程中的小坑51
3.2 基于@AspectJ的配置52
3.2.1 聲明切入點53
茶歇時間:Spring AOP與AspectJ中PCD的不同之處54
3.2.2 聲明通知55
3.2.3 基于@AspectJ的示例57
3.3 基于XML Schema的配置61
3.3.1 聲明切入點62
3.3.2 聲明通知62
3.3.3 通知器64
3.3.4 基于XML Schema的示例64
茶歇時間:超簡潔的JUnit單元測試入門65
3.4 小結66
第4章 從Spring Framework到Spring Boot67
4.1 Spring Boot基礎知識67
4.1.1 為什么需要Spring Boot67
4.1.2 Spring Boot的組成部分68
4.1.3 解析Spring Boot工程70
4.2 起步依賴71
4.2.1 Spring Boot內置的起步依賴72
4.2.2 起步依賴的實現原理73
4.3 自動配置75
4.3.1 自動配置的實現原理75
茶歇時間:通過ImportSelector選擇性導入配置76
4.3.2 配置項加載機制詳解77
4.4 編寫我們自己的自動配置與起步依賴79
4.4.1 編寫自己的自動配置80
4.4.2 脫離Spring Boot實現自動配置83
4.4.3 編寫自己的起步依賴87
4.5 小結88
第5章 面向生產的Spring Boot89
5.1 Spring Boot Actuator概述89
5.1.1 端點概覽89
5.1.2 端點配置92
茶歇時間:針對Web和Actuator使用不同端口的好處95
5.1.3 定制端點信息96
5.1.4 開發自己的組件與端點98
茶歇時間:為什么要優先通過ObjectProvider獲取Bean100
5.2 基于Micrometer的系統度量101
5.2.1 Micrometer概述102
5.2.2 常用度量指標103
5.2.3 自定義度量指標107
茶歇時間:性能分析時的95線與99線是什么含義110
5.2.4 度量值的輸出111
5.3 部署Spring Boot應用程序112
5.3.1 可執行Jar及其原理112
5.3.2 構建啟動代碼115
茶歇時間:如何優雅地關閉系統117
5.3.3 啟動后的一次性執行邏輯118
茶歇時間:通過Lombok簡化代碼121
5.4 小結122
第二部分 Spring中的數據操作
第6章 Spring中的JDBC124
6.1 配置數據源124
6.1.1 數據庫連接池124
茶歇時間:HikariCP為什么說自己比別人快127
6.1.2 數據源配置詳解128
茶歇時間:使用Docker簡化本地開發環境的準備工作133
6.2 使用JDBC操作數據庫134
6.2.1 查詢類操作135
6.2.2 變更類操作139
6.2.3 批處理操作141
6.2.4 自動配置說明143
6.3 事務管理143
6.3.1 Spring Framework的事務抽象144
6.3.2 Spring事務的基本配置146
6.3.3 聲明式事務148
茶歇時間:通常事務加在哪層比較合適 151
茶歇時間:聲明式事務背后的原理153
6.3.4 編程式事務154
6.4 異常處理155
6.4.1 統一的異常抽象155
6.4.2 自定義錯誤碼處理邏輯157
6.5 小結158
第7章 對象關系映射160
7.1 通過Hibernate操作數據庫160
7.1.1 Hibernate與JPA160
7.1.2 定義實體對象162
茶歇時間:為什么一定要用Money類來表示金額165
茶歇時間:OpenSessionInView問題168
7.1.3 通過Hibernate API操作數據庫169
7.1.4 通過Spring Data的Repository操作數據庫173
茶歇時間:JpaRepository背后的原理178
7.2 通過MyBatis操作數據庫179
7.2.1 定義MyBatis映射180
7.2.2 在Spring中配置并使用MyBatis184
7.2.3 提升MyBatis的開發效率187
7.3 小結193
第8章 數據訪問進階194
8.1 連接池的實用配置194
8.1.1 保護敏感的連接配置194
8.1.2 記錄SQL語句執行情況197
8.1.3 Druid的Filter擴展200
8.2 在Spring工程中訪問Redis202
8.2.1 配置Redis連接202
茶歇時間:Redis的幾種部署模式204
8.2.2 Redis的基本操作206
茶歇時間:本地緩存 vs. 分布式緩存212
8.2.3 通過Repository操作Redis212
茶歇時間:多種不同的Repository如何共存216
8.3 Spring的緩存抽象217
8.3.1 基于注解的方法緩存217
8.3.2 替換不同的緩存實現221
8.4 小結224
第三部分 使用Spring開發Web應用
第9章 Spring MVC實踐226
9.1 簡單上手Spring MVC226
9.1.1 Spring MVC概覽226
9.1.2 編寫一個簡單的控制器227
9.2 Spring MVC的請求處理邏輯234
9.2.1 請求的處理流程234
茶歇時間:Servlet的基礎知識240
9.2.2 請求處理方法241
茶歇時間:請求處理過程中遇到的幾個作用范圍243
茶歇時間:Spring Boot自動配置
預埋的擴展點245
9.3 Spring MVC的視圖機制252
9.3.1 視圖解析252
9.3.2 常用視圖類型253
9.3.3 靜態資源與緩存260
茶歇時間:時間 vs. 空間263
9.4 訪問Web資源264
9.4.1 通過RestTemplate訪問Web資源264
9.4.2 RestTemplate的進階用法270
茶歇時間:模板設計模式275
9.4.3 簡單定制RestTemplate275
茶歇時間:HttpComponents的Keep-Alive默認策略優化277
9.5 小結278
第 10章 保護Web安全279
10.1 認識Spring Security279
10.1.1 模塊介紹280
10.1.2 工作原理280
10.2 身份認證282
10.2.1 Spring Security的身份認證機制282
10.2.2 基于用戶名和密碼的身份認證283
茶歇時間:使用Spring Security加密保存密碼284
10.2.3 實現“記住我”功能294
10.2.4 自定義認證方式298
10.3 訪問授權303
10.3.1 訪問授權的判斷方式303
10.3.2 基本的權限配置304
10.3.3 面向方法的訪問授權308
茶歇時間:如何忽略權限校驗310
10.4 常見Web攻擊防護311
10.4.1 跨站請求偽造攻擊防護311
10.4.2 會話固定攻擊防護316
10.4.3 跨站腳本攻擊防護316
10.4.4 點擊劫持攻擊防護317
10.4.5 引導使用HTTPS317
10.5 客戶端程序的認證319
10.5.1 幾種常見的認證方式319
10.5.2 用RestTemplate實現簡單的認證320
10.6 小結323
第 11章 Web開發進階325
11.1 在Spring MVC中實現AOP325
11.1.1 使用HandlerInterceptor實現AOP325
11.1.2 完善異常處理邏輯329
11.2 調整Web容器333
11.2.1 更換內嵌Web容器334
茶歇時間:不同的Servlet版本與對應的容器335
11.2.2 調整內嵌Web容器配置335
茶歇時間:如何獲得HTTPS證書338
11.2.3 支持HTTP/2341
茶歇時間:網站提供的HTTPS服務到底是否安全 345
11.3 支持分布式Session346
11.3.1 幾種常見的解決方案346
11.3.2 使用Spring Session實現分布式Session348
11.4 響應式Web353
11.4.1 了解Project Reactor354
11.4.2 使用WebFlux代替WebMVC359
茶歇時間:為什么Project Reactor和WebFlux還沒成為主流363
11.4.3 通過WebClient訪問Web資源366
11.5 小結371
第四部分 使用Spring開發微服務
第 12章 微服務與云原生應用374
12.1 走近微服務374
12.1.1 什么是微服務374
12.1.2 微服務的特點375
12.2 RESTful風格的微服務377
12.2.1 什么是RESTful風格的微服務377
12.2.2 設計RESTful風格的微服務379
12.2.3 了解領域驅動設計383
12.3 理解云原生385
12.3.1 什么是云原生應用385
12.3.2 十二要素應用386
12.3.3 Spring Cloud概述390
12.4 小結391
第 13章 服務注冊與發現392
13.1 常見的負載均衡方案392
13.1.1 集中式方案392
13.1.2 分布式方案395
13.2 使用Spring Cloud實現負載均衡396
13.2.1 在Zookeeper中注冊服務396
茶歇時間:為什么Zookeeper不適合做服務注冊中心398
13.2.2 使用Spring Cloud LoadBalancer訪問服務398
茶歇時間:@LoadBalanced是如何工作的399
13.2.3 使用OpenFeign訪問服務400
13.3 服務注冊與發現的抽象與應用405
13.3.1 服務注冊的抽象405
13.3.2 服務發現的抽象406
13.3.3 在Consul中注冊服務406
13.3.4 在Nacos中注冊服務408
茶歇時間:Spring Cloud Alibaba概述411
13.3.5 在Eureka中注冊服務411
13.4 小結414
第 14章 服務配置管理415
14.1 使用Spring Cloud Config實現配置管理415
14.1.1 為何需要配置中心415
14.1.2 基于Spring Cloud Config Server的配置中心416
茶歇時間:加解密繞不開的JCE423
14.1.3 通過Spring Cloud Config Client訪問配置423
14.2 服務配置的實現原理與應用426
14.2.1 服務配置的實現原理426
14.2.2 基于Zookeeper的配置中心429
14.2.3 基于Consul的配置中心431
14.2.4 基于Alibaba Nacos的配置中心433
14.3 小結436
第 15章 服務容錯保護437
15.1 常見的服務容錯模式437
15.1.1 幾種常見的容錯模式437
15.1.2 通過AOP實現簡單的容錯440
15.2 使用Resilience4j實現容錯447
15.2.1 使用Resilience4j實現限流447
15.2.2 使用Resilience4j實現斷路453
15.2.3 使用Resilience4j實現隔離457
15.2.4 resilience4j-spring-boot2的特別說明461
15.3 使用Spring Cloud CircuitBreaker實現容錯462
15.3.1 通過Spring Cloud CircuitBreaker使用Resilience4j463
15.3.2 通過Spring Cloud CircuitBreaker使用Sentinel466
15.4 小結476
第 16章 服務集成477
16.1 使用Dubbo進行RPC通信477
16.1.1 Dubbo概述477
16.1.2 Dubbo的基礎用法479
茶歇時間:多個copyProperties()該如何選擇482
茶歇時間:為什么對外的接口里不要用枚舉484
16.2 使用消息中間件進行異步通信488
16.2.1 為什么要使用基于消息的異步通信488
茶歇時間:常見的消息模型489
16.2.2 通過Spring AMQP使用RabbitMQ489
16.2.3 通過Spring Cloud Stream使用Kafka495
茶歇時間:用Docker Compose在本地啟動一套Kafka501
16.3 服務鏈路追蹤502
16.3.1 鏈路追蹤概述503
16.3.2 基于Spring Cloud Sleuth實現鏈路追蹤505
茶歇時間:OpenTelemetry概述509
16.4 基于Spring Cloud Gateway實現微服務網關510
16.4.1 什么是微服務網關510
16.4.2 Spring Cloud Gateway的路由配置512
16.5 小結522
第五部分 附錄
附錄A 從Spring Boot 2.x升級到3.0526
A.1 升級判斷標準526
A.2 升級操作526
A.2.1 依賴組件升級527
A.2.2 代碼修改529
附錄B 將應用程序打包為Docker鏡像531
B.1 編寫Dockerfile531
茶歇時間:如何選擇基礎Java Docker鏡像532
B.2 構建并運行鏡像533
B.3 構建分層鏡像534
B.4 其他打包方式535
附錄C 通過Spring Native打包本地鏡像536
C.1 GraalVM與Spring Native536
C.1.1 GraalVM簡介536
C.1.2 Spring Native簡介537
C.2 編譯打包本地鏡像538
C.2.1 準備工作538
C.2.2 調整編譯打包配置539
C.2.3 修改代碼542
C.2.4 其他優化547
后記549
展開全部
學透Spring 從入門到項目實戰 作者簡介
丁雪豐 美團研究員、技術圖書作譯者、極客時間《玩轉Spring全家桶》課程講師。獲得了“上海市青年金才”“騰訊云Z具價值專家”等稱號。致力于推動先進技術在國內的發展,是Spring Framework 2.0和Spring Framework 2.5官方文檔翻譯項目的負責人,翻譯及原創出版了《Spring Boot實戰》《Spring攻略》《RESTful Web Services Cookbook中文版》等8部圖書。曾就職于平安壹錢包、百度與,在互聯網金融、支付等領域積累了豐富的大型系統構建經驗。