第一篇 Spring基础篇
4 I# Q# u, I/ w2 M! @" k% G第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
! |- G% O+ `$ O4 `3 @
第二篇 Spring 5新特性篇
- y5 A; t+ R( i0 i
第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
; c9 X% E8 l5 c2 q8 q$ m+ ^第三篇 Spring系统集成篇
' p: W& f' C& x* f" G) i+ b
第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
javazx.com
第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