导语
内容提要
Spring框架是为了降低解决企业系统开发的复杂度而产生的,掌握并学会使用Spring框架进行项目开发,是Java开发人员必备技能之一,本书从企业应用开发的角度出发,深入浅出地讲解了Spring 5的新特性和Spring集成开发技术。全书共19章,第1章~第3章主要讲解如何搭建Spring开发环境以及Spring IoC和AOP容器的原理及代码分析。第4章和第5章概述Spring 5和Java 8的新特性。第6章和第7章讲解Spring 5新特性——WebFlux响应式编程、开发和调试。第8章和第9章主要讲解Spring 5集成Kotlin语言以及更多Spring 5新特性的细节。第10章~第19章主要介绍Spring集成其他热门技术,例如,Log4j2日志框架、SpringMVC、MyBatis、Redis缓存、ZooKeeper、Kafka消息中间件、Mycat分库分表中间件、Sharding-JOBC和Dubbo服务治理框架等。附录部分介绍本书涉及的以及在面试中常见的设计模式。
本书适用于所有Java编程语言开发人员、分布式系统开发爱好者以及计算机专业的学生等。
目录
第一篇 Spring基础篇
第1章 环境搭建
1.1 Spring介绍
1.1.1 Spring设计目标
1.1.2 Spring各个子模块
1.1.3 Spring使用场景
1.1.4 Spring与Spring MVC的关系
1.1.5 Spring 5高级特性
1.2 环境准备
1.2.1 安装JDK
1.2.2 安装IntelliJ IDEA
1.2.3 安装Apache Maven
1.2.4 安装Apache Tomcat
1.3 快速搭建Spring 5项目
1.3.1 使用IntelliJ IDEA创建Spring 5 + Spring MVC项目
1.3.2 测试部署
1.4 小结
第2章 Spring IoC容器原理
2.1 IoC容器揭秘
2.1.1 IoC的概念
2.1.2 依赖倒置原则
2.1.3 依赖注入
2.2 Spring IoC的实现方式
2.2.1 XML方式实现
2.2.2 通过注解方式实现
2.3 Spring IoC实现原理解析
2.3.1 BeanFactory代码解析
2.3.2 ApplicationContext代码解析
2.3.3 BeanDefinition代码解析
2.3.4 Spring IoC代码分析
2.4 Spring IoC容器中Bean的生命周期
2.5 小结
第3章 Spring AOP揭秘
3.1 AOP前置知识
3.1.1 JDK动态代理
3.1.2 CGLIB动态代理
3.1.3 AOP联盟
3.2 AOP概述
3.2.1 AOP基本概念
3.2.2 Spring AOP相关概念
3.3 Spring AOP实现
3.3.1 基于JDK动态代理实现
3.3.2 基于CGLIB动态代理实现
3.4 基于Spring AOP的实战
3.4.1 增强类型
3.4.2 前置增强
3.4.3 后置增强
3.4.4 环绕增强
3.4.5 异常抛出增强
3.4.6 引介增强
3.4.7 切入点类型
3.5 Spring集成AspectJ实战
3.5.1 使用AspectJ方式配置Spring AOP
3.5.2 AspectJ各种切点指示器
3.5.3 args()与“@args()”
3.5.4 @annotation()
3.5.5 execution
3.5.6 target()与“@target()”
3.5.7 this()
3.5.8 within()与“@within()”
3.6 Spring AOP的实现原理
3.6.1 设计原理
3.6.2 JdkDynamicAopProxy
3.6.3 CglibAopProxy
3.7 小结
第二篇 Spring 5新特性篇
第4章 Spring 5新特性概述
4.1 Spring 5.0 新特性
4.1.1 运行环境
4.1.2 删除的代码
4.1.3 核心修改
4.1.4 核心容器更新
4.1.5 Spring Web MVC更新
4.1.6 Spring WebFlux
4.1.7 对Kotlin的支持
4.1.8 测试改进
4.2 Spring 5.1新特性
4.2.1 核心修改
4.2.2 核心容器更新
4.2.3 Web修改
4.2.4 Spring Web MVC更新
4.2.5 Spring WebFlux更新
4.2.6 Spring Messaging更新
4.2.7 Spring ORM更新
4.2.8 测试更新
第5章 Java 8新特性概述
5.1 Lambda表达式
5.1.1 Lambda表达式初探
5.1.2 Lambda表达式作用域
5.1.3 在线程中使用Lambda表达式
5.1.4 在集合中使用Lambda表达式
5.1.5 在Stream中使用Lambda表达式
5.2 接口默认方法
5.3 小结
第6章 Spring WebFlux响应式编程
6.1 传统的编程模型
6.2 响应式编程模型
6.3 Reactor
6.3.1 Flux与Mono
6.3.2 subscribe()
6.3.3 操作符(Operator)
6.3.4 线程模型
6.4 Spring WebFlux
6.4.1 基于注解的WebFlux开发方式
6.4.2 基于函数式的WebFlux开发方式
6.5 小结
第7章 WebClient响应式客户端
7.1 RestTemplate调试Spring MVC
7.2 WebClient调试Spring WebFlux
7.3 小结
第8章 Spring 5结合Kotlin编程
8.1 Kotlin简介
8.1.1 Kotlin的特性
8.1.2 Kotlin基本数据类型
8.1.3 Kotlin开发环境搭建
8.1.4 在Kotlin中定义常量与变量
8.1.5 字符串模板
8.1.6 NULL检查机制
8.1.7 For循环和区间
8.1.8 定义函数
8.1.9 类和对象
8.1.10 Kotlin与Java互操作
8.2 Spring 5集成Kotlin
8.3 小结
第9章 Spring 5更多新特性
9.1 Resource接口
9.2 HTTP 2
9.2.1 HTTP的现状
9.2.2 HTTP 2的新特性
9.2.3 多路复用与长连接的区别
9.3 JUnit 5
9.3.1 JUnit 5简介
9.3.2 JUnit 5快速体验
9.3.3 JUnit 5常用注解
9.4 小结
第三篇 Spring系统集成篇
第10章 Spring集成Log4j2
10.1 Log4j2配置详解
10.2 Log4j2日志级别
10.3 Log4j2实战演练
10.4 小结
第11章 Spring集成Spring MVC
11.1 Spring MVC快速体验
11.1.1 web.xml配置
11.1.2 创建Spring MVC的配置文件
11.1.3 创建Spring MVC的视图文件
11.1.4 创建控制器
11.1.5 测试运行
11.2 Spring MVC视图呈现
11.2.1 FreeMarker视图的实现
11.2.2 XML视图的实现
11.2.3 JSON视图的实现
11.3 Spring MVC拦截器
11.4 Spring MVC代码解析
11.5 小结
第12章 Spring集成MyBatis
12.1 Spring、Spring MVC和MyBatis集成快速体验
12.2 MyBatis代码解析
12.3 小结
第13章 Spring事务管理
13.1 事务的特性
13.2 事务的隔离级别
13.2.1 READ_UNCOMMITTED
13.2.2 READ_COMMITTED
13.2.3 REPEATABLE_READ
13.2.4 SERIALIZABLE
13.3 JDBC方式使用事务
13.4 Spring事务管理快速体验
13.5 Spring事务隔离级别
13.6 Spring事务传播行为
13.7 Spring事务代码分析
13.8 小结
第14章 Spring集成Redis
14.1 Redis单节点安装
14.2 Redis支持的数据类型
14.2.1 Redis String类型的使用方式
14.2.2 Redis Hash类型的使用方式
14.2.3 Redis List类型的使用方式
14.2.4 Redis Set类型的使用方式
14.2.5 Redis SortedSet类型的使用方式
14.3 Redis持久化策略
14.3.1 Redis RDB持久化
14.3.2 Redis AOF持久化
14.4 Redis主从复制模式
14.4.1 Redis一主一从拓扑结构
14.4.2 Redis一主多从拓扑结构
14.4.3 Redis树形拓扑结构
14.4.4 Redis主从架构的缺点
14.5 Redis哨兵模式
14.5.1 Redis哨兵模式简介
14.5.2 Redis哨兵定时监控任务
14.5.3 主观下线和客观下线
14.5.4 Redis哨兵选举领导者
14.5.5 故障转移
14.5.6 Redis哨兵模式安装部署
14.6 Redis集群模式
14.6.1 Redis集群模式数据共享
14.6.2 Redis集群中的主从复制
14.6.3 Redis集群中的一致性问题
14.6.4 Redis集群架构
14.6.5 Redis集群容错
14.6.6 Redis集群环境搭建
14.7 Spring、MyBatis和Redis集成快速体验
14.8 Redis缓存穿透和雪崩
14.8.1 Redis缓存穿透
14.8.2 Redis缓存雪崩
14.9 小结
第15章 Spring集成ZooKeeper
15.1 ZooKeeper集群安装
15.2 ZooKeeper总体架构
15.2.1 ZooKeeper选举机制
15.2.2 ZooKeeper数据模型
15.3 Spring集成ZooKeeper快速体验
15.4 ZooKeeper发布订阅
15.4.1 NodeCache
15.4.2 PathChildrenCache
15.4.3 TreeCache
15.5 ZooKeeper分布式锁
15.6 小结
第16章 Spring集成Kafka
16.1 Kafka集群安装
16.2 Kafka总体架构
16.3 Spring集成Kafka快速体验
16.4 小结
第17章 Spring集成Mycat
17.1 Mycat分库分表
17.2 Mycat分库分表实战
17.3 Spring+MyBatis+Mycat快速体验
17.4 小结
第18章 Spring集成Sharding-JDBC
18.1 Spring集成Sharding-JDBC快速体验
18.2 Sharding-JDBC强制路由
18.3 Sharding-JDBC分布式主键
18.4 小结
第19章 Spring集成Dubbo
19.1 远程过程调用协议
19.2 Spring集成Dubbo快速体验
19.3 Dubbo代码分析
19.4 小结
附录A 设计模式
A.1 工厂模式
A.2 抽象工厂模式
A.3 单例模式
A.4 建造者模式
A.5 原型模式
A.6 适配器模式
A.7 桥接模式
A.8 标准模式
A.9 组合模式
A.10 装饰器模式
A.11 外观模式
A.12 享元模式
A.13 代理模式
A.14 责任链模式
A.15 命令模式
A.16 解释器模式
A.17 迭代器模式
A.18 中介者模式
A.19 备忘录模式
A.20 观察者模式
A.21 状态模式
A.22 空对象模式
A.23 策略模式
A.24 模板模式
A.25 拦截过滤器模式
参考文献