全新正版书籍,24小时发货,可开发票。
¥ 52.3 5.2折 ¥ 99.8 全新
库存8件
作者王涛
出版社清华大学出版社
ISBN9787302601319
出版时间2022-09
装帧平装
开本16开
定价99.8元
货号29471578
上书时间2024-11-27
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月
本书从Spring IoC核心技术的使用开始讲解,具备充分的Spring IoC使用说明,并且对Spring IoC核心源码进行分析。 本书分为22章,主要内容包括SpringXML模式中XML文档的验证、XML资源读取、Spring默认标签的解析、自定义标签解析、各类资源对象注册和生命周期,以及Spring注解模式中的注解元数据、注解模式的启动和注解模式下Bean的注册等。本书可以帮助读者快速掌握Spring IoC容器的基本使用及Spring IoC相关的源码逻辑。 本书的源码分析在大部分情况下遵循测试用例优先,尽可能保证源码现象可复现。 本书适合具有一定Java编程基础和对Spring框架有基本开发能力的读者。
本书从Spring IoC核心技术的使用开始讲解,具备充分的Spring IoC使用说明,并且对Spring IoC核心源码进行分析。 本书分为22章,主要内容包括SpringXML模式中XML文档的验证、XML资源读取、Spring默认标签的解析、自定义标签解析、各类资源对象注册和生命周期,以及Spring注解模式中的注解元数据、注解模式的启动和注解模式下Bean的注册等。本书可以帮助读者快速掌握Spring IoC容器的基本使用及Spring IoC相关的源码逻辑。 本书的源码分析在大部分情况下遵循测试用例优先,尽可能保证源码现象可复现。 本书适合具有一定Java编程基础和对Spring框架有基本开发能力的读者。
王涛,长期从事Java EE、微服务相关技术领域的开发,对Spring系列框架、MyBatis等其他开源框架都有深刻认识。
第1章 Spring容器环境搭建及基本使用
1.1Spring容器环境搭建
1.2Spring基本代码编辑
1.3Spring IoC核心类
小结
第2章 IoC资源读取及注册
2.1XML文档验证
2.1.1认识 XML 验证模式
2.1.2Spring 中 XML 的验证
2.2Document对象获取
2.3BeanDefinition 注册
2.3.1doRegisterBeanDefinitions 流程
2.3.2parseBeanDefinitions 分析
2.3.3parseDefaultElement Spring原生标签的处理
2.3.4import 标签解析
2.3.5alias 标签解析
2.3.6bean标签解析
2.3.7自定义标签解析概述
小结
第3章 自定义标签
3.1创建自定义标签环境搭建
3.1.1编写 XSD 文件
3.1.2编写 NamespaceHandler 实现类
3.1.3编写 BeanDefinitionParser 实现类
3.1.4编写注册方式
3.1.5测试用例的编写
3.2自定义标签解析
3.2.1NamesapceHandler和 BeanDefinitionParser 之间的关系
3.2.2获取命名空间地址
3.2.3NamespaceHandler对象获取
3.2.4getHandlerMappings获取命名空间的映射关系
3.2.5NamespaceHandler的获取
3.2.6NamespaceHandler的 init 方法
3.2.7NamespaceHandler缓存的刷新
3.2.8解析标签BeanDefinitionParser对象准备
3.2.9解析标签parse方法调用
小结
第4章 别名注册和BeanDefinition注册
4.1别名注册测试环境搭建
4.2别名注册接口
4.3SimpleAliasRegistry中注册别名的实现
4.4别名换算真名
4.5BeanDefinition注册
4.6DefaultListableBeanFactory中存储 BeanDefinition 的容器
4.7DefaultListableBeanFactory中的注册细节
4.7.1BeanDefinition的验证
4.7.2容器中存在 BeanName 对应的 BeanDefinition 的处理
4.7.3容器中不存在 BeanName 对应的 BeanDefinition 的处理
4.7.4BeanDefinition的刷新处理
4.8BeanDefinition的获取
小结
第5章 bean 标签解析
5.1创建 bean 标签解析环境
5.1.1编写 SpringXML 配置文件
5.1.2编写beannode对应的测试用例
5.2parseBeanDefinitionElement方法处理
5.2.1parseBeanDefinitionElement 部分处理
5.2.2parseBeanDefinitionElement 第二部分处理
5.2.3parseBeanDefinitionElement 第三部分处理
5.3BeanDefinition装饰
5.4BeanDefinition 细节
5.4.1AbstractBeanDefinition属性
5.4.2RootBeanDefinition属性
5.4.3ChildBeanDefinition属性
5.4.4GenericBeanDefinition属性
5.4.5AnnotatedGenericBeanDefinition属性
小结
第6章 Bean的生命周期
6.1Java对象的生命周期
6.2浅看Bean生命周期
6.3初始化Bean
6.3.1无构造标签
6.3.2构造标签中的index模式和name模式
6.3.3Spring中的实例化策略
6.4Bean属性设置
6.4.1BeanWrapper创建
6.4.2BeanWrapper属性设置
6.4.3CachedIntrospectionResults对象介绍
6.4.4PropertyValue对象介绍
6.4.5终的数据设置
6.5Bean生命周期值Aware接口
6.6BeanPostProcessor#postProcessBeforeInitialization
6.7InitializingBean接口和自定义initmethod方法
6.8BeanPostProcessor#postProcessAfterInitialization
6.9Bean的摧毁
6.9.1DefaultSingletonBeanRegistry中的摧毁
6.9.2DefaultListableBeanFactory中的摧毁
小结
第7章 Bean的获取
7.1Bean获取方式配置
7.2Bean获取的测试环境搭建
7.3doGetBean 分析
7.3.1BeanName转换
7.3.2尝试从单例容器中获取
7.3.3从FactoryBean接口中获取实例
7.3.4尝试从父容器中获取
7.3.5BeanName标记
7.3.6非FactoryBean的单例对象创建
7.3.7非FactoryBean的原型对象创建
7.3.8既不是单例模式也不是原型模式的非FactoryBean创建
7.3.9类型转换器中获取Bean
7.4循环依赖
7.4.1Java中的循环依赖
7.4.2Spring中的循环依赖处理
小结
第8章 SpringXML模式下容器的生命周期
8.1SpringXML模式下容器的生命周期测试环境搭建
8.2XmlBeanFactory分析
8.3FileSystemXmlApplicationContext分析
8.3.1父上下文处理
8.3.2配置文件路径解析
8.3.3刷新操作
8.3.4关闭方法分析
8.4ClassPathXmlApplicationContext分析
8.5SpringXML关键对象附表
8.6初识 LifecycleProcessor
8.7LifecycleProcessor测试环境搭建
8.8start方法分析
8.9stop方法分析
8.10LifecycleGroup相关变量
8.11BeanPostProcessor 注册
8.12BeanFactoryPostProcessor方法调用
小结
第9章 Spring注解模式
9.1注解模式测试环境搭建
9.2basePackages模式启动
9.2.1scan 方法分析
9.2.2doScan方法分析
9.2.3处理单个BeanDefinition
9.3componentClasses模式启动
小结
第10章 Spring 配置类解析
10.1parse方法分析
10.2processConfigurationClass方法分析
10.3doProcessConfigurationClass方法分析
10.4处理各类注解
10.4.1处理 @Component 注解
10.4.2处理 @PropertySource 和 @PropertySources注解
10.4.3处理 @ComponentScans 和 @ComponentScan 注解
10.4.4处理 @Import 注解
10.4.5处理 @ImportResource 注解
10.4.6处理 @Bean 注解
10.5处理父类配置
小结
第11章 ConfigurationClassPostProcessor 分析
11.1初识ConfigurationClassPostProcessor
11.2ConfigurationClassPostProcessor测试用例搭建
11.3postProcessBeanDefinitionRegistry方法分析
11.3.1容器内已存在的 Bean 进行候选分类
11.3.2候选 BeanDefinition Holder 的排序
11.3.3BeanName 生成器的创建
11.3.4初始化基本环境信息
11.3.5解析候选 Bean
11.3.6注册 Import Bean 和清理数据
11.4postProcessBeanFactory方法分析
小结
第12章 DeferredImportSelectorHandler 分析
12.1初识DeferredImportSelectorHandler
12.2DeferredImportSelectorHandler 测试环境搭建
12.3handler 方法分析
12.4DeferredImportSelectorGroupingHandler分析
12.5processImports方法分析
小结
第13章 ConfigurationClassBeanDefinitionReader 分析
13.1ConfigurationClassBeanDefinitionReader测试环境搭建
13.2ConfigurationClassBeanDefinitionReader构造函数
13.3loadBeanDefinitions 方法分析
13.4TrackedConditionEvaluator分析
13.5loadBeanDefinitionsForConfigurationClass方法分析
13.6loadBeanDefinitionsForBeanMethod方法分析
13.7registerBeanDefinitionForImportedConfigurationClass方法分析
13.8loadBeanDefinitionsFromImportedResources方法分析
13.9loadBeanDefinitionsFromRegistrars方法分析
小结
第14章 Spring元数据
14.1认识MetadataReaderFactory
14.2SimpleMetadataReaderFactory分析
14.3CachingMetadataReaderFactory分析
14.4注解元数据读取工厂总结
14.5初识 MetadataReader
14.6MetadataReader接口实现类说明
14.6.1SimpleAnnotationMetadataReadingVisitor成员变量
14.6.2SimpleAnnotationMetadata成员变量
14.6.3SimpleMethodMetadata成员变量
14.6.4MergedAnnotationsCollection成员变量
14.6.5TypeMappedAnnotation成员变量
14.6.6AnnotationTypeMappings成员变量
14.6.7ClassMetadataReadingVisitor成员变量
14.6.8AnnotationMetadataReadingVisitor成员变量
14.7类元数据接口说明
14.8StandardClassMetadata对象分析
14.9注解元数据基础认识
14.10Java 中注解数据获取
14.11ScopeMetadataResolver 分析
14.11.1ScopeMetadata 分析
14.11.2AnnotationSco
— 没有更多了 —
以下为对购买帮助不大的评价