摘要:第10章~第19章主要介绍Spring集成其他热门技术,例如:Log4j2日志框架、Spring MVC、 MyBatis、 Redis缓存、ZooKeeper、 Kafka消息中间件、Mycat分库分表中间件、Sharding-JDBC和Dubbo服务治理框架。本书第1章~第3章主要讲解如何搭建Spring开发环境以及Spring IOC和AOP容器的原理及代码分析。

最近挖掘出来的好书,黄文毅,第二版了

周冠亚 黄文毅 著

购书:

京东网

当当网

天猫网

内 容 简 介

Spring框架是为了降低解决企业系统开发的复杂度而产生的,掌握并学会使用Spring框架进行项目开发,是Java开发人员必备技能之一。本书第1章~第3章主要讲解如何搭建Spring开发环境以及Spring IOC和AOP容器的原理及代码分析。第4章和第5章概述Spring 5和Java 8的新特性。第6章和第7章讲解Spring 5新特性——WebFlux响应式编程、开发和调试。第8章和第9章主要讲解Spring 5.0集成Kotlin语言以及更多Spring 5新特性的细节。第10章~第19章主要介绍Spring集成其他热门技术,例如:Log4j2日志框架、Spring MVC、 MyBatis、 Redis缓存、ZooKeeper、 Kafka消息中间件、Mycat分库分表中间件、Sharding-JDBC和Dubbo服务治理框架。附录部分介绍本书涉及到的以及在面试中常见的设计模式。

本书适用于所有Java编程语言开发人员、分布式系统开发爱好者以及计算机专业的学生等。

大咖推荐语

从基础再到深入浅出,用极其简单的例子详解了Spring的每个知识点,更重要的是每一个知识点都有极其详细生动的例子搭配讲解,特别是Spring AOP业务和系统功能分离的思想看到之后原来都可以这么简单;所以非常推荐此书给大家。

——前苏宁易购系统架构师 JackLiu

这是一本获取Spring 5知识和经验的必备图书。本书通过理论和实际应用相结合的方式对Spring的核心知识点进行深入剖析,同时也介绍了Spring 5的新特性。在阅读完本书后,可以让读者更好地理解Spring的实现原理和底层架构,能够使用Spring的强大功能至上而下地构建复杂的Spring应用程序。感谢作者花了大量时间和精力创造了一本Spring领域的百科全书。

——驴妈妈旅游网资深研发工程师 邓贤文

本书很好地讲述了Spirng 5在实际开发应用场景中的各种重要核心技术和最新实用技术,深入浅出地论述了每个技术的应用场景,解释深入,通俗易懂。不仅仅适合入门者系统地学习Spring技术,也适合有一定工作经验的人来加强和深入对Spring的理解,是一本质量很高的Spring技术图书。

——中泰证券股份有限公司科技研发部技术经理 王祥来

仅从书的目录来看,本书实战型比较强,通过具体地、常用的实战例子,引导、激发大家学习Spring的热情,相信这将会是一本不错的Spring 5参考书。

——美图技术专家,导师 阮龙生

本书由浅入深地讲解Spring 5,作者成功地将复杂的理论以很容易理解的方式解释出来。同时本书指导读者如何在实际工作中运用这些方法,有助于读者结合实践去阅读理解源码。虽然关于Spring 5的图书很多,但是本书是难得一见的佳作。

——中国电信号百商旅电子商务有限公司项目经理 刘俊

如果你想在项目中熟练使用Spring或者想深入了解Spring的工作原理,这本书就是你想要的!本书从基础出发,由浅入深、循序渐进地阐述Spring的重点(IoC/Aop),并且扩展整合了很多在实际应用场景中常用的技术,构成了一套完整的项目框架体系,是一本非常实用的Spring著作。

——上海卓赞教育科技有限公司(DaDa英语)资深研发工程师 宋庭勇

从书的目录来看,内容丰富,由浅及深,相信这会是一本不错的Spring 5参考书。

——瑞幸咖啡测试经理 陈茂川

凌晨已至,脑子却还在飞速运转,距离翻开此书已不知不觉过了三个小时。书中内容由浅入深,简明扼要,如果你是第一次接触Spring,这本书势必成为你的启蒙老师。

——美团高级前端研发工程师 张奇雄

自从Rod在2003年创建Spring框架开始,一路借助于完整的生态体系建设和与时俱进的自我革新,Spring已经成为Java应用研发框架的事实标准,多年来在各个行业信息化建设中表现优异。本书完整的衔接了理论与工程实践,不单对Spring最新相关特性做了全面阐述,同时也覆盖了Spring与各种主流中间件及框架结合的最佳实践。对于一线研发人员而言,相信本书可以帮助你做出睿智的决策。

——同程艺龙智慧交通技术负责人 杨继龙

Spring框架作为企业级别常用的成熟框架,已作为主流在市场上应用和实践多年,本书不单详解了Spring相关的基础内容,更是在Spring 5上有非常系统化地讲解。本书不仅对初学者有很好的指导作用,对于有相关开发经验的工程师来说,本书也是不可多得的Spring佳作,能为有经验的工程师的技术决策起到积极作用,值得推荐给大家!

——陆金所服务器端高级研发工程师 周雅君

周冠亚老师对技术有着异常执着的热情,多年的一线互联网大厂工作经历,也让周老师练就了一身不凡的本领。本书是周老师的得意之作,是对Spring相关技术钻研的个人心得和成果,也是对多年Spring项目实战经验的总结和分享。该书从Spring项目实战到源码分析,再到原理讲解,深入浅出地从多个角度解读Spring,能够帮助技术人员快速了解、掌握甚至深入Spring,是一本不可多得的佳作。

——云析学院创始人,Java架构师,金牌讲师 赵新

作者把自己的多年的开发经验总结付梓,从实际应用的角度出发系统地将Spring的核心概念、高级特性、系统集成整合到一起,引领读者轻松踏上Spring企业开发的旅途,易懂易学,用处很大。

——《从Lucene到Elasticsearch全文检索实战》一书作者 姚攀

Spring作为一个互联网公司的必备框架,由Rod Johnson创建。它是为了解决企业应用开发的复杂性而创建的,为应用提供一站式(one-stopshop)的解决方案。Spring的发展日新月异,已经进化到了5.0的阶段,本书除了透彻地介绍了Spring标准的模块之外,把5.0的新特征很翔实的展示给了读者,实例也很精炼,此外,Spring和其他模块集成的快速体验也实战化,给读者能快速地实战落地提供了良好的指导。

——网易资深开发工程师 震升

目 录

第一篇 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.0 高级特性5

1.2 环境准备5

1.2.1 安装JDK5

1.2.2 安装IntelliJ IDEA6

1.2.3 安装Apache Maven6

1.2.4 安装Apache Tomcat7

1.3 快速搭建Spring 5.0项目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 基于AspectJ AOP的实战78

3.5.1 使用AspectJ方式实现AOP78

3.5.2 AspectJ各种切点指示器81

3.5.3 args()与"@args()"81

3.5.4 @annotation()87

3.5.5 execution89

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 JdkDynamicAopProxy106

3.6.3 CglibAopProxy110

3.7 小结115

第二篇 Spring 5.0新特性篇

第4章 Spring 5.0新特性概述119

4.1 Spring 5.0新特性119

4.1.1 运行环境119

4.1.2 删除的代码120

4.1.3 核心修改120

4.1.4 核心容器更新120

4.1.5 Spring Web MVC更新120

4.1.6 Spring WebFlux121

4.1.7 对Kotlin的支持121

4.1.8 测试改进122

4.2 Spring 5.1新特性123

4.2.1 核心修改123

4.2.2 核心容器更新123

4.2.3 Web修改123

4.2.4 Spring Web MVC更新123

4.2.5 Spring WebFlux更新124

4.2.6 Spring Messaging更新124

4.2.7 Spring ORM更新124

4.2.8 测试更新124

第5章 Java 8新特性概述125

5.1 Lambda表达式125

5.1.1 Lambda表达式初探125

5.1.2 Lambda表达式作用域127

5.1.3 在线程中使用Lambda表达式128

5.1.4 在集合中使用Lambda表达式129

5.1.5 在Stream中使用Lambda表达式130

5.2 接口默认方法131

第6章 Spring WebFlux响应式编程135

6.1 传统的编程模型135

6.2 响应式编程模型136

6.3 Reactor137

6.3.1 Flux与Mono137

6.3.2 subscribe()139

6.3.3 操作符(Operator)141

6.3.4 线程模型146

6.4 Spring WebFlux148

6.4.1 基于注解的WebFlux开发方式148

6.4.2 基于函数式的WebFlux开发方式149

6.5 小结154

第7章 WebClient响应式客户端155

7.1 RestTemplate调试Spring MVC155

7.2 WebClient调试Spring WebFlux158

7.3 小结160

第8章 Spring 5.0结合Kotlin编程161

8.1 Kotlin简介161

8.1.1 Kotlin的特性161

8.1.2 Kotlin基本数据类型163

8.1.3 Kotlin开发环境搭建163

8.1.4 在Kotlin中定义常量与变量164

8.1.5 字符串模板164

8.1.6 NULL检查机制165

8.1.7 For循环和区间165

8.1.8 定义函数168

8.1.9 类和对象169

8.1.10 Kotlin与Java互操作171

8.2 Spring 5.0集成Kotlin172

8.3 小结174

第9章 Spring 5.0更多新特性175

9.1 Resource接口175

9.2 HTTP/2176

9.2.1 HTTP的现状176

9.2.2 HTTP 2的新特性176

9.2.3 多路复用与长连接的区别177

9.3 Junit 5178

9.3.1 JUnit 5简介178

9.3.2 JUnit 5快速体验179

9.3.3 JUnit 5常用注解180

第三篇 Spring系统集成篇

第10章 Spring集成Log4j2185

10.1 Log4j2配置详解185

10.2 Log4j2日志级别188

10.3 Log4j2实战演练189

第11章 在Spring中集成Spring MVC193

11.1 Spring MVC快速体验193

11.1.1 web.xml配置193

11.1.2 创建Spring MVC的配置文件194

11.1.3 创建Spring MVC的视图文件194

11.1.4 创建控制器195

11.1.5 测试运行195

11.2 Spring MVC视图呈现196

11.2.1 FreeMarker视图的实现196

11.2.2 XML视图的实现197

11.2.3 JSON视图的实现199

11.3 Spring MVC拦截器200

11.4 Spring MVC代码解析202

11.5 小结229

第12章 在Spring中集成MyBatis230

12.1 Spring、Spring MVC和MyBatis集成快速体验230

12.2 MyBatis代码解析239

12.3 小结246

第13章 Spring事务管理247

13.1 事务的特性247

13.2 事务的隔离级别247

13.2.1 READ_UNCOMMITTED248

13.2.2 READ_COMMITTED248

13.2.3 REPEATABLE_READ249

13.2.4 SERIALIZABLE249

13.3 JDBC方式使用事务250

13.4 Spring事务管理快速体验251

13.5 Spring事务隔离级别257

13.6 Spring事务传播行为258

13.7 Spring事务代码分析258

13.8 小结266

第14章 Spring集成Redis267

14.1 Redis单节点安装267

14.2 Redis支持的数据类型269

14.2.1 Redis String类型的使用方式269

14.2.2 Redis Hash类型的使用方式275

14.2.3 Redis List类型的使用方式277

14.2.4 Redis Set类型的使用方式280

14.2.5 Redis SortedSet类型的使用方式283

14.3 Redis持久化策略287

14.3.1 Redis RDB持久化287

14.3.2 Redis AOF持久化288

14.4 Redis主从复制模式290

14.4.1 Redis一主一从拓扑结构292

14.4.2 Redis一主多从拓扑结构292

14.4.3 Redis树形拓扑结构293

14.4.4 Redis主从架构的缺点294

14.5 Redis哨兵模式294

14.5.1 Redis哨兵模式简介294

14.5.2 Redis哨兵定时监控任务295

14.5.3 主观下线和客观下线297

14.5.4 Redis哨兵选举领导者298

14.5.5 故障转移298

14.5.6 Redis哨兵模式安装部署299

14.6 Redis集群模式305

14.6.1 Redis集群模式数据共享306

14.6.2 Redis集群中的主从复制306

14.6.3 Redis集群中的一致性问题306

14.6.4 Redis集群架构307

14.6.5 Redis集群容错307

14.6.6 Redis集群环境搭建308

14.7 Spring、MyBatis和Redis集成快速体验316

14.8 Redis缓存穿透和雪崩326

14.8.1 Redis缓存穿透326

14.8.2 Redis缓存雪崩329

14.9 小结332

第15章 在Spring中集成ZooKeeper333

15.1 ZooKeeper集群安装333

15.2 ZooKeeper总体架构339

15.2.1 ZooKeeper选举机制339

15.2.2 ZooKeeper数据模型341

15.3 Spring集成ZooKeeper快速体验345

15.4 ZooKeeper发布订阅349

15.4.1 NodeCache349

15.4.2 PathChildrenCache352

15.4.3 TreeCache355

15.5 ZooKeeper分布式锁359

15.6 小结364

第16章 Spring集成Kafka365

16.1 Kafka集群安装365

16.2 Kafka总体架构368

16.2.1 Kafka的功能368

16.2.2 Kafka的相关术语369

16.2.3 Topic和Partition369

16.2.4 消费组371

16.2.5 Push和Pull372

16.2.6 复制原理372

16.2.7 ISR372

16.2.8 数据可靠性保障375

16.2.9 消息发送模式375

16.2.10 消息传输保障376

16.3 Spring集成Kafka快速体验376

16.4 小结380

第17章 Spring集成Mycat381

17.1 Mycat分库分表381

17.1.1 分库381

17.1.2 分表382

17.2 Mycat分库分表实战383

17.3 Spring+MyBatis+Mycat快速体验387

17.4 小结399

第18章 Spring集成Sharding-JDBC400

18.1 Spring集成Sharding-JDBC快速体验400

18.2 Sharding-JDBC强制路由409

18.3 Sharding-JDBC分布式主键410

18.4 小结415

第19章 在Spring中集成Dubbo416

19.1 远程过程调用协议416

19.2 在Spring集成中Dubbo快速体验417

19.3 Dubbo代码分析420

19.3.1 SPI420

19.3.2 Dubbo服务提供方代码 分析426

19.3.3 Dubbo服务提供方不使用注册中心430

19.3.4 Dubbo服务提供方使用注册中心436

19.3.5 Dubbo服务调用方代码分析446

19.3.6 Dubbo服务调用方服务发现447

19.3.7 Dubbo服务调用方服务发现451

19.4 小结455

第20章 附录 设计模式456

20.1 工厂模式456

20.2 抽象工厂模式459

20.3 单例模式465

20.4 建造者模式466

20.5 原型模式471

20.6 适配器模式475

20.7 桥接模式479

20.8 标准模式480

20.9 组合模式484

20.10 装饰器模式486

20.11 外观模式489

20.12 享元模式492

20.13 代理模式494

20.14 责任链模式496

20.15 命令模式499

20.16 解释器模式502

20.17 迭代器模式505

20.18 中介者模式507

20.19 备忘录模式509

20.20 观察者模式512

20.21 状态模式514

20.22 空对象模式516

20.23 策略模式519

20.24 模板模式522

20.25 拦截过滤器模式525

相关文章