图书目录

目录

第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编写beannode对应的测试用例

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接口和自定义initmethod方法

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.2AnnotationScopeMetadataResolver分析

小结

第15章Spring事件

15.1Spring事件测试环境搭建

15.2Spring事件处理器注册

15.2.1事件处理器实例创建后

15.2.2事件处理器实例摧毁前

15.3Spring事件推送和处理

小结

第16章占位符解析

16.1基本环节搭建

16.2XML的解析

16.3外部配置的读取

16.4字符串占位符解析

16.4.1resolveStringValue分析

16.4.2resolvePlaceholders分析

16.4.3resolveRequiredPlaceholders分析

16.4.4BeanDefinitionVisitor#visitBeanDefinition分析

小结

第17章Spring 中的转换服务

17.1初识 Spring转换服务

17.2ConversionServiceFactoryBean对象的实例化

17.2.1afterPropertiesSet 方法分析

17.2.2GenericConversionService对象创建

17.2.3注册转换服务

17.2.4ConversionServiceFactory.registerConverters 分析

17.3转换过程分析

17.3.1ConversionService 分析

17.3.2handleResult分析

17.3.3getConverter分析

17.3.4ConversionUtils.invokeConverter分析

17.3.5handleConverterNotFound分析

17.4脱离 Spring 实现转换服务

小结

第18章MessageSource源码分析

18.1MessageSource测试环境搭建

18.2MessageSource实例化

18.3getMessage方法分析

18.3.1resolveCodeWithoutArguments方法分析

18.3.2resolveCode方法分析

小结

第19章资源解析器

19.1资源解析器测试环境搭建

19.2ResourcePatternResolver类图分析

19.3PathMatchingResourcePatternResolver构造器分析

19.4getResource 方法分析

19.5getResources方法分析

19.5.1findPathMatchingResources 方法分析

19.5.2findAllClassPathResources方法分析

小结

第20章BeanName 生成策略

20.1AnnotationBeanNameGenerator 分析

20.1.1AnnotatedBeanDefinition类型的BeanName生成策略

20.1.2非AnnotatedBeanDefinition类型的BeanName生成策略

20.2FullyQualifiedAnnotationBeanNameGenerator分析

20.3DefaultBeanNameGenerator分析

小结

第21章条件注解

21.1条件注解测试环境搭建

21.2条件注解分析

小结

第22章Spring排序注解

22.1排序注解测试环境搭建

22.2OrderComparator.sort方法分析

小结