目录 第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方法分析 小结