第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章 Spr數據
14.1認識MetadataReaderFactory
14.2SimpleMetadataReaderFactory分析
14.3CachingMetadataReaderFactory分析
14.數據讀取工廠總結
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數據接口說明
14.8StandardClassMetadata對像分析
14.數據基礎認識
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方法分析
小結