目錄
第一篇 Spring基礎篇
第1章 環境搭建 3
1.1 Spring介紹 3
1.1.1 Spring設計目標 3
1.1.2 Spring各個子模塊 3
1.1.3 Spring使用場景 4
1.1.4 Spring與Spring MVC的關係 5
1.1.5 Spring 5高級特性 5
1.2 環境準備 5
1.2.1 安裝JDK 5
1.2.2 安裝IntelliJ IDEA 6
1.2.3 安裝Apache Maven 6
1.2.4 安裝Apache Tomcat 7
1.3 快速搭建Spring 5項目 8
1.3.1 使用IntelliJ IDEA創建Spring 5 Spring MVC項目 8
1.3.2 測試部署 9
1.4 小結 9
第2章 Spring IoC容器原理 10
2.1 IoC容器揭秘 10
2.1.1 IoC的概念 10
2.1.2 依賴倒置原則 11
2.1.3 依賴注入 16
2.2 Spring IoC的實現方式 17
2.2.1 XML方式實現 17
2.2.2 通過注解方式實現 20
2.3 Spring IoC實現原理解析 21
2.3.1 BeanFactory代碼解析 21
2.3.2 ApplicationContext代碼解析 22
2.3.3 BeanDefinition代碼解析 23
2.3.4 Spring IoC代碼分析 23
2.4 Spring IoC容器中Bean的生命周期 44
2.5 小結 52
第3章 Spring AOP揭秘 53
3.1 AOP前置知識 53
3.1.1 JDK動態代理 53
3.1.2 CGLIB動態代理 56
3.1.3 AOP聯盟 58
3.2 AOP概述 58
3.2.1 AOP基本概念 58
3.2.2 Spring AOP相關概念 59
3.3 Spring AOP實現 60
3.3.1 基於JDK動態代理實現 60
3.3.2 基於CGLIB動態代理實現 65
3.4 基於Spring AOP的實戰 70
3.4.1 增強類型 70
3.4.2 前置增強 71
3.4.3 後置增強 73
3.4.4 環繞增強 74
3.4.5 異常拋齣增強 75
3.4.6 引介增強 75
3.4.7 切入點類型 77
3.5 Spring集成AspectJ實戰 78
3.5.1 使用AspectJ方式配置Spring AOP 78
3.5.2 AspectJ各種切點指示器 81
3.5.3 args()與“@args()” 81
3.5.4 @annotation() 87
3.5.5 execution 89
3.5.6 target()與“@target()” 90
3.5.7 this() 92
3.5.8 within()與“@within()” 95
3.6 Spring AOP的實現原理 98
3.6.1 設計原理 99
3.6.2 JdkDynamicAopProxy 106
3.6.3 CglibAopProxy 110
3.7 小結 115
第二篇 Spring 5新特性篇
第4章 Spring 5新特性概述 117
4.1 Spring 5.0新特性 117
4.1.1 運行環境 117
4.1.2 刪除的代碼 118
4.1.3 核心修改 118
4.1.4 核心容器更新 118
4.1.5 Spring Web MVC更新 118
4.1.6 Spring WebFlux 119
4.1.7 對Kotlin的支持 119
4.1.8 測試改進 120
4.2 Spring 5.1新特性 121
4.2.1 核心修改 121
4.2.2 核心容器更新 121
4.2.3 Web修改 121
4.2.4 Spring Web MVC更新 121
4.2.5 Spring WebFlux更新 122
4.2.6 Spring Messaging更新 122
4.2.7 Spring ORM更新 122
4.2.8 測試更新 122
第5章 Java 8新特性概述 123
5.1 Lambda錶達式 123
5.1.1 Lambda錶達式初探 123
5.1.2 Lambda錶達式作用域 125
5.1.3 在綫程中使用Lambda錶達式 126
5.1.4 在集閤中使用Lambda錶達式 127
5.1.5 在Stream中使用Lambda錶達式 128
5.2 接口默認方法 129
5.3 小結 132
第6章 Spring WebFlux響應式編程 133
6.1 傳統的編程模型 133
6.2 響應式編程模型 134
6.3 Reactor 135
6.3.1 Flux與Mono 135
6.3.2 subscribe() 137
6.3.3 操作符(Operator) 139
6.3.4 綫程模型 144
6.4 Spring WebFlux 146
6.4.1 基於注解的WebFlux開發方式 146
6.4.2 基於函數式的WebFlux開發方式 147
6.5 小結 152
第7章 WebClient響應式客戶端 153
7.1 RestTemplate調試Spring MVC 153
7.2 WebClient調試Spring WebFlux 156
7.3 小結 158
第8章 Spring 5結閤Kotlin編程 159
8.1 Kotlin簡介 159
8.1.1 Kotlin的特性 159
8.1.2 Kotlin基本數據類型 161
8.1.3 Kotlin開發環境搭建 161
8.1.4 在Kotlin中定義常量與變量 162
8.1.5 字符串模闆 162
8.1.6 NULL檢查機製 163
8.1.7 For循環和區間 163
8.1.8 定義函數 166
8.1.9 類和對象 167
8.1.10 Kotlin與Java互操作 169
8.2 Spring 5集成Kotlin 170
8.3 小結 172
第9章 Spring 5更多新特性 173
9.1 Resource接口 173
9.2 HTTP 2 174
9.2.1 HTTP的現狀 174
9.2.2 HTTP 2的新特性 174
9.2.3 多路復用與長連接的區彆 175
9.3 JUnit 5 176
9.3.1 JUnit 5簡介 176
9.3.2 JUnit 5快速體驗 176
9.3.3 JUnit 5常用注解 178
9.4 小結 179
第三篇 Spring係統集成篇
第10章 Spring集成Log4j2 181
10.1 Log4j2配置詳解 181
10.2 Log4j2日誌級彆 184
10.3 Log4j2實戰演練 185
10.4 小結 188
第11章 Spring集成Spring MVC 189
11.1 Spring MVC快速體驗 189
11.1.1 web.xml配置 189
11.1.2 創建Spring MVC的配置 文件 190
11.1.3 創建Spring MVC的視圖 文件 190
11.1.4 創建控製器 191
11.1.5 測試運行 191
11.2 Spring MVC視圖呈現 192
11.2.1 FreeMarker視圖的實現 192
11.2.2 XML視圖的實現 193
11.2.3 JSON視圖的實現 195
11.3 Spring MVC攔截器 196
11.4 Spring MVC代碼解析 198
11.5 小結 225
第12章 Spring集成MyBatis 226
12.1 Spring、Spring MVC和MyBatis集成 快速體驗 226
12.2 MyBatis代碼解析 236
12.3 小結 243
第13章 Spring事務管理 244
13.1 事務的特性 244
13.2 事務的隔離級彆 244
13.2.1 READ_UNCOMMITTED 245
13.2.2 READ_COMMITTED 245
13.2.3 REPEATABLE_READ 246
13.2.4 SERIALIZABLE 246
13.3 JDBC方式使用事務 247
13.4 Spring事務管理快速體驗 248
13.5 Spring事務隔離級彆 254
13.6 Spring事務傳播行為 255
13.7 Spring事務代碼分析 255
13.8 小結 263
第14章 Spring集成Redis 264
14.1 Redis單節點安裝 264
14.2 Redis支持的數據類型 266
14.2.1 Redis String類型的使用 方式 266
14.2.2 Redis Hash類型的使用 方式 271
14.2.3 Redis List類型的使用 方式 274
14.2.4 Redis Set類型的使用 方式 277
14.2.5 Redis SortedSet類型的使用 方式 280
14.3 Redis持久化策略 284
14.3.1 Redis RDB持久化 284
14.3.2 Redis AOF持久化 285
14.4 Redis主從復製模式 287
14.4.1 Redis一主一從拓撲結構 289
14.4.2 Redis一主多從拓撲結構 289
14.4.3 Redis樹形拓撲結構 290
14.4.4 Redis主從架構的缺點 291
14.5 Redis哨兵模式 291
14.5.1 Redis哨兵模式簡介 291
14.5.2 Redis哨兵定時監控任務 292
14.5.3 主觀下綫和客觀下綫 294
14.5.4 Redis哨兵選舉領導者 295
14.5.5 故障轉移 295
14.5.6 Redis哨兵模式安裝部署 296
14.6 Redis集群模式 302
14.6.1 Redis集群模式數據共享 303
14.6.2 Redis集群中的主從復製 303
14.6.3 Redis集群中的一緻性 問題 303
14.6.4 Redis集群架構 304
14.6.5 Redis集群容錯 304
14.6.6 Redis集群環境搭建 305
14.7 Spring、MyBatis和Redis集成快速 體驗 313
14.8 Redis緩存穿透和雪崩 323
14.8.1 Redis緩存穿透 323
14.8.2 Redis緩存雪崩 326
14.9 小結 329
第15章 Spring集成ZooKeeper 330
15.1 ZooKeeper集群安裝 330
15.2 ZooKeeper總體架構 336
15.2.1 ZooKeeper選舉機製 336
15.2.2 ZooKeeper數據模型 338
15.3 Spring集成ZooKeeper快速體驗 342
15.4 ZooKeeper發布訂閱 346
15.4.1 NodeCache 346
15.4.2 PathChildrenCache 349
15.4.3 TreeCache 352
15.5 ZooKeeper分布式鎖 356
15.6 小結 361
第16章 Spring集成Kafka 362
16.1 Kafka集群安裝 362
16.2 Kafka總體架構 365
16.3 Spring集成Kafka快速體驗 374
16.4 小結 377
第17章 Spring集成Mycat 379
17.1 Mycat分庫分錶 379
17.2 Mycat分庫分錶實戰 381
17.3 Spring MyBatis Mycat快速體驗 386
17.4 小結 397
第18章 Spring集成Sharding-JDBC 398
18.1 Spring集成Sharding-JDBC快速 體驗 398
18.2 Sharding-JDBC強製路由 407
18.3 Sharding-JDBC分布式主鍵 408
18.4 小結 413
第19章 Spring集成Dubbo 414
19.1 遠程過程調用協議 414
19.2 Spring集成Dubbo快速體驗 415
19.3 Dubbo代碼分析 419
19.4 小結 452
附錄A 設計模式 453
A.1 工廠模式 453
A.2 抽象工廠模式 456
A.3 單例模式 462
A.4 建造者模式 463
A.5 原型模式 468
A.6 適配器模式 472
A.7 橋接模式 476
A.8 標準模式 477
A.9 組閤模式 481
A.10 裝飾器模式 483
A.11 外觀模式 486
A.12 享元模式 489
A.13 代理模式 491
A.14 責任鏈模式 493
A.15 命令模式 496
A.16 解釋器模式 499
A.17 迭代器模式 502
A.18 中介者模式 504
A.19 備忘錄模式 506
A.20 觀察者模式 509
A.21 狀態 模 式 511
A.22 空對象模式 513
A.23 策略模式 516
A.24 模闆模式 519
A.25 攔截過濾器模式 522
參考文獻 365
· · · · · · (
收起)