-
内容大纲
本书从Spring IoC核心技术的使用开始讲解,具备充分的Spring IoC使用说明,并且对Spring IoC核心源码进行分析。
本书分为22章,主要内容包括SpringXML模式中XML文档的验证、XML资源读取、Spring默认标签的解析、自定义标签解析、各类资源对象注册和生命周期,以及Spring注解模式中的注解元数据、注解模式的启动和注解模式下Bean的注册等。本书可以帮助读者快速掌握Spring IoC容器的基本使用及Spring IoC相关的源码逻辑。
本书的源码分析在大部分情况下遵循测试用例优先,尽可能保证源码现象可复现。
本书适合具有一定Java编程基础和对Spring框架有基本开发能力的读者。 -
作者介绍
-
目录
第1章 Spring容器环境搭建及基本使用
1.1 Spring容器环境搭建
1.2 Spring基本代码编辑
1.3 SpringIoC核心类
小结
第2章 IoC资源读取及注册
2.1 XML文档验证
2.1.1 认识XML验证模式
2.1.2 Spring中XML的验证
2.2 Document对象获取
2.3 BeanDefinition注册
2.3.1 doRegisterBeanDefinitions流程
2.3.2 parseBeanDefinitions分析
2.3.3 parseDefaultElementSpring原生标签的处理
2.3.4 import标签解析
2.3.5 alias标签解析
2.3.6 bean标签解析
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.1 NamesapceHandler和BeanDefinitionParser之间的关系
3.2.2 获取命名空间地址
3.2.3 NamespaceHandler对象获取
3.2.4 getHandlerMappings获取命名空间的映射关系
3.2.5 NamespaceHandler的获取
3.2.6 NamespaceHandler的init方法
3.2.7 NamespaceHandler缓存的刷新
3.2.8 解析标签BeanDefinitionParser对象准备
3.2.9 解析标签parse方法调用
小结
第4章 别名注册和BeanDefinition注册
4.1 别名注册测试环境搭建
4.2 别名注册接口
4.3 SimpleAliasRegistry中注册别名的实现
4.4 别名换算真名
4.5 BeanDefinition注册
4.6 DefaultListableBeanFactory中存储BeanDefinition的容器
4.7 DefaultListableBeanFactory中的注册细节
4.7.1 BeanDefinition的验证
4.7.2 容器中存在BeanName对应的BeanDefinition的处理
4.7.3 容器中不存在BeanName对应的BeanDefinition的处理
4.7.4 BeanDefinition的刷新处理
4.8 BeanDefinition的获取
小结
第5章 bean标签解析
5.1 创建bean标签解析环境
5.1.1 编写SpringXML配置文件
5.1.2 编写beannode对应的测试用例
5.2 parseBeanDefinitionElement方法处理
5.2.1 parseBeanDefinitionElement第一部分处理
5.2.2 parseBeanDefinitionElement第二部分处理
5.2.3 parseBeanDefinitionElement第三部分处理
5.3 BeanDefinition装饰
5.4 BeanDefinition细节
5.4.1 AbstractBeanDefinition属性
5.4.2 RootBeanDefinition属性
5.4.3 ChildBeanDefinition属性
5.4.4 GenericBeanDefinition属性
5.4.5 AnnotatedGenericBeanDefinition属性
小结
第6章 Bean的生命周期
6.1 Java对象的生命周期
6.2 浅看Bean生命周期
6.3 初始化Bean
6.3.1 无构造标签
6.3.2 构造标签中的index模式和name模式
6.3.3 Spring中的实例化策略
6.4 Bean属性设置
6.4.1 BeanWrapper创建
6.4.2 BeanWrapper属性设置
6.4.3 CachedIntrospectionResults对象介绍
6.4.4 PropertyValue对象介绍
6.4.5 最终的数据设置
6.5 Bean生命周期值Aware接口
6.6 BeanPostProcessor#postProcessBeforeInitialization
6.7 InitializingBean接口和自定义initmethod方法
6.8 BeanPostProcessor#postProcessAfterInitialization
6.9 Bean的摧毁
6.9.1 DefaultSingletonBeanRegistry中的摧毁
6.9.2 DefaultListableBeanFactory中的摧毁
小结
第7章 Bean的获取
7.1 Bean获取方式配置
7.2 Bean获取的测试环境搭建
7.3 doGetBean分析
7.3.1 BeanName转换
7.3.2 尝试从单例容器中获取
7.3.3 从FactoryBean接口中获取实例
7.3.4 尝试从父容器中获取
7.3.5 BeanName标记
7.3.6 非FactoryBean的单例对象创建
7.3.7 非FactoryBean的原型对象创建
7.3.8 既不是单例模式也不是原型模式的非FactoryBean创建
7.3.9 类型转换器中获取Bean
7.4 循环依赖
7.4.1 Java中的循环依赖
7.4.2 Spring中的循环依赖处理
小结
第8章 SpringXML模式下容器的生命周期
8.1 SpringXML模式下容器的生命周期测试环境搭建
8.2 XmlBeanFactory分析
8.3 FileSystemXmlApplicationContext分析
8.3.1 父上下文处理
8.3.2 配置文件路径解析
8.3.3 刷新操作
8.3.4 关闭方法分析
8.4 ClassPathXmlApplicationContext分析
8.5 SpringXML关键对象附表
8.6 初识LifecycleProcessor
8.7 LifecycleProcessor测试环境搭建
8.8 start方法分析
8.9 stop方法分析
8.10 LifecycleGroup相关变量
8.11 BeanPostProcessor注册
8.12 BeanFactoryPostProcessor方法调用
小结
第9章 Spring注解模式
9.1 注解模式测试环境搭建
9.2 basePackages模式启动
9.2.1 scan方法分析
9.2.2 doScan方法分析
9.2.3 处理单个BeanDefinition
9.3 componentClasses模式启动
小结
第10章 Spring配置类解析
10.1 parse方法分析
10.2 processConfigurationClass方法分析
10.3 doProcessConfigurationClass方法分析
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.2 ConfigurationClassPostProcessor测试用例搭建
11.3 postProcessBeanDefinitionRegistry方法分析
11.3.1 容器内已存在的Bean进行候选分类
11.3.2 候选BeanDefinitionHolder的排序
11.3.3 BeanName生成器的创建
11.3.4 初始化基本环境信息
11.3.5 解析候选Bean
11.3.6 注册ImportBean和清理数据
11.4 postProcessBeanFactory方法分析
小结
第12章 DeferredImportSelectorHandler分析
12.1 初识DeferredImportSelectorHandler
12.2 DeferredImportSelectorHandler测试环境搭建
12.3 handler方法分析
12.4 DeferredImportSelectorGroupingHandler分析
12.5 processImports方法分析
小结
第13章 ConfigurationClassBeanDefinitionReader分析
13.1 ConfigurationClassBeanDefinitionReader测试环境搭建
13.2 ConfigurationClassBeanDefinitionReader构造函数
13.3 loadBeanDefinitions方法分析
13.4 TrackedConditionEvaluator分析
13.5 loadBeanDefinitionsForConfigurationClass方法分析
13.6 loadBeanDefinitionsForBeanMethod方法分析
13.7 registerBeanDefinitionForImportedConfigurationClass方法分析
13.8 loadBeanDefinitionsFromImportedResources方法分析
13.9 loadBeanDefinitionsFromRegistrars方法分析
小结
第14章 Spring元数据
14.1 认识MetadataReaderFactory
14.2 SimpleMetadataReaderFactory分析
14.3 CachingMetadataReaderFactory分析
14.4 注解元数据读取工厂总结
14.5 初识MetadataReader
14.6 MetadataReader接口实现类说明
14.6.1 SimpleAnnotationMetadataReadingVisitor成员变量
14.6.2 SimpleAnnotationMetadata成员变量
14.6.3 SimpleMethodMetadata成员变量
14.6.4 MergedAnnotationsCollection成员变量
14.6.5 TypeMappedAnnotation成员变量
14.6.6 AnnotationTypeMappings成员变量
14.6.7 ClassMetadataReadingVisitor成员变量
14.6.8 AnnotationMetadataReadingVisitor成员变量
14.7 类元数据接口说明
14.8 StandardClassMetadata对象分析
14.9 注解元数据基础认识
14.10 Java中注解数据获取
14.11 ScopeMetadataResolver分析
14.11.1 ScopeMetadata分析
14.11.2 AnnotationScopeMetadataResolver分析
小结
第15章 Spring事件
15.1 Spring事件测试环境搭建
15.2 Spring事件处理器注册
15.2.1 事件处理器实例创建后
15.2.2 事件处理器实例摧毁前
15.3 Spring事件推送和处理
小结
第16章 占位符解析
16.1 基本环节搭建
16.2 XML的解析
16.3 外部配置的读取
16.4 字符串占位符解析
16.4.1 resolveStringValue分析
16.4.2 resolvePlaceholders分析
16.4.3 resolveRequiredPlaceholders分析
16.4.4 BeanDefinitionVisitor#visitBeanDefinition分析
小结
第17章 Spring中的转换服务
17.1 初识Spring转换服务
17.2 ConversionServiceFactoryBean对象的实例化
17.2.1 afterPropertiesSet方法分析
17.2.2 GenericConversionService对象创建
17.2.3 注册转换服务
17.2.4 ConversionServiceFactory.registerConverters分析
17.3 转换过程分析
17.3.1 ConversionService分析
17.3.2 handleResult分析
17.3.3 getConverter分析
17.3.4 ConversionUtils.invokeConverter分析
17.3.5 handleConverterNotFound分析
17.4 脱离Spring实现转换服务
小结
第18章 MessageSource源码分析
18.1 MessageSource测试环境搭建
18.2 MessageSource实例化
18.3 getMessage方法分析
18.3.1 resolveCodeWithoutArguments方法分析
18.3.2 resolveCode方法分析
小结
第19章 资源解析器
19.1 资源解析器测试环境搭建
19.2 ResourcePatternResolver类图分析
19.3 PathMatchingResourcePatternResolver构造器分析
19.4 getResource方法分析
19.5 getResources方法分析
19.5.1 findPathMatchingResources方法分析
19.5.2 findAllClassPathResources方法分析
小结
第20章 BeanName生成策略
20.1 AnnotationBeanNameGenerator分析
20.1.1 AnnotatedBeanDefinition类型的BeanName生成策略
20.1.2 非AnnotatedBeanDefinition类型的BeanName生成策略
20.2 FullyQualifiedAnnotationBeanNameGenerator分析
20.3 DefaultBeanNameGenerator分析
小结
第21章 条件注解
21.1 条件注解测试环境搭建
21.2 条件注解分析
小结
第22章 Spring排序注解
22.1 排序注解测试环境搭建
22.2 OrderComparator.sort方法分析
小结
同类热销排行榜
- C语言与程序设计教程(高等学校计算机类十二五规划教材)16
- 电机与拖动基础(教育部高等学校自动化专业教学指导分委员会规划工程应用型自动化专业系列教材)13.48
- 传感器与检测技术(第2版高职高专电子信息类系列教材)13.6
- ASP.NET项目开发实战(高职高专计算机项目任务驱动模式教材)15.2
- Access数据库实用教程(第2版十二五职业教育国家规划教材)14.72
- 信号与系统(第3版下普通高等教育九五国家级重点教材)15.08
- 电气控制与PLC(普通高等教育十二五电气信息类规划教材)17.2
- 数字电子技术基础(第2版)17.36
- VB程序设计及应用(第3版十二五职业教育国家规划教材)14.32
- Java Web从入门到精通(附光盘)/软件开发视频大讲堂27.92
推荐书目
-
孩子你慢慢来/人生三书 华人世界率性犀利的一枝笔,龙应台独家授权《孩子你慢慢来》20周年经典新版。她的《...
-
时间简史(插图版) 相对论、黑洞、弯曲空间……这些词给我们的感觉是艰深、晦涩、难以理解而且与我们的...
-
本质(精) 改革开放40年,恰如一部四部曲的年代大戏。技术突变、产品迭代、产业升级、资本对接...