本书从Spring IoC核心技术的使用开始讲解, 具备充分的Spring IoC使用说明, 并且对Spring IoC核心源码进行分析。本书的内容包括SpringXML模式中XML文件的验证、XML资源读取、Spring默认标签的解析、自定义标签解析、各类资源对象注册和生命周期等, 以及Spring注解模式中的注解元数据、注解模式的启动和注解模式下Bean的注册等。本书可以帮助读者快速掌握Spring IoC容器的基本使用及Spring IoC相关的源码逻辑。本书的源码分析在大部分情况下遵循测试用例优先, 尽可能保证源码现象可复现。
Spring框架是目前全球Java开发领域中最受欢迎的开发框架之一。现在主流的Java开发领域中有大量的项目基于Spring或者对接Spring进行适配。
笔者初识Spring是在2015年的一个项目中,当时项目使用的是Spring 4.1版本,该版本的功能虽然已经比较强大,但是各类配置文件的处理会比较烦琐。随着Spring版本的升级迭代,基于SpringXML的开发方式逐渐减少,Spring注解模式开发逐渐增多,目前Spring注解模式开发已经成为主流技术。笔者作为Spring的使用人员,对于Spring中的一些实现细节十分感兴趣,并付诸实践记录了一些源码的流程,同时想把这些经验分享给更多的人,便有了本书。
Spring框架升级迭代的速度相对其他一些框架而言更快,本书中所采用的Spring框架版本是5.2.3.release,从Spring IoC层面来看,这些升级(新增spring.factories文件支持和新增spring.components文件支持)有些会影响Spring IoC相关内容,但是涉及Spring IoC相关的处理流程内容变化较少。如果有大版本的升级并改动了Spring IoC相关内容也属于正常情况,请读者耐心查看更新记录找到变化的内容再对其进行分析,从而完善对Spring IoC的相关认识。
本书的组织结构和主要内容
本书共分为22章。
第1~8章主要围绕SpringXML相关技术进行分析,将会对传统的SpringXML开发进行说明,并对SpringXML相关的各类配置解析进行分析,内容如下。
第1章对Spring框架的使用进行说明,并讲述Spring IoC中的核心类。
第2章对Spring IoC资源读取及注册相关内容进行分析,主要包含SpringXML资源文件的读取、注册和解析。
第3章对自定义标签相关内容进行分析,包含如何编写一个自定义标签和自定义标签的处理过程分析。
第4章对别名注册和BeanDefinition注册进行分析,包含别名注册环境搭建、别名注册流程和BeanDefinition注册流程的分析。
第5章对bean标签解析进行详细分析,包含bean标签解析环境搭建和解析流程分析。
第6章对Bean生命周期相关内容进行分析,包含Bean的初始化、Bean的属性设置和Bean的摧毁相关分析。
第7章对Bean的获取进行分析,包含获取Bean的环境搭建和获取Bean流程分析。
第8章对SpringXML模式下容器的生命周期进行分析,包含容器的启动和容器的关闭(暂停)分析。
第9~14章主要围绕Spring注解相关技术进行分析,将会对Spring注解相关内容进行分析,包含且不限于注解Bean加载、配置类解析和常用注解分析,内容如下。
第9章对Spring注解模式进行分析,包含Spring注解模式的环境搭建和启动流程分析。
第10章对Spring配置类解析进行分析,包含常见注解的解析。
第11章对Spring中负责配置解析的类进行分析,主要分析对象是ConfigurationClassPostProcessor。
第12章对Spring注解模式下的Import注解相关源代码进行分析,主要分析对象是DeferredImportSelectorHandler。
第13章对Spring注解模式下配置类中的Bean读取进行分析,包含测试环境搭建和读取流程分析。
第14章对Spring中常见的元数据进行说明和演示。
第15~22章主要围绕Spring IoC辅助工具进行分析,将会对Spring中常见的一些辅助工具进行分析,包含且不限于占位符解析和Spring事件模式,内容如下。
第15章对Spring中的事件处理机制进行演示和源码分析。
第16章对Spring中的占位符解析进行源码分析。
第17章对Spring中关于对象转换相关源码进行分析并简单实现了一个转换服务。
第18章对Spring中的消息进行源码分析,包含Spring消息环境搭建和处理流程分析。
第19章对Spring中资源解析器进行分析,包含资源解析器环境搭建和资源解析过程分析。
源代码
第20章对Spring中BeanName的生成策略进行分析。
第21章对Spring中的条件注解进行分析,包含条件注解的环境搭建和注解解析流程分析。
第22章对Spring中的排序注解进行分析。
本书配套源代码可以扫描右侧二维码获取。
本书面向对象
本书面向具备Java编程能力的读者和对Spring IoC具有使用经验和有兴趣的读者,通过学习本书将学到Spring的基础使用以及一些高级功能,如Spring事件和转换服务等,以及Spring IoC的基础实现逻辑。
致谢
在此非常诚挚地感谢所有SpringFramework项目的创建者和开发者,感谢他们所做的基础性工作和对开源项目的热情,没有他们就没有本书的诞生。
由于编者水平有限,书中不当之处在所难免,欢迎广大同行和读者批评指正。
王涛
2022年6月