《Spring IoC源碼精講》是2022年清華大學出版社出版的圖書,作者是王濤。
基本介紹
- 書名:Spring IoC源碼精講
- 作者:王濤
- 出版社:清華大學出版社
- 出版時間:2022年9月1日
- 定價:99.8 元
- ISBN:9787302601319
內容簡介,圖書目錄,
內容簡介
本書從Spring IoC核心技術的使用開始講解,具備充分的Spring IoC使用說明,並且對Spring IoC核心源碼進行分析。 本書分為22章,主要內容包括SpringXML模式中XML文檔的驗證、XML資源讀取、Spring默認標籤的解析、自定義標籤解析、各類資源對象註冊和生命周期,以及Spring註解模式中的註解元數據、註解模式的啟動和註解模式下Bean的註冊等。本書可以幫助讀者快速掌握Spring IoC容器的基本使用及Spring IoC相關的源碼邏輯。 本書的源碼分析在大部分情況下遵循測試用例優先,儘可能保證源碼現象可復現。 本書適合具有一定Java編程基礎和對Spring框架有基本開發能力的讀者。
圖書目錄
第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.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方法分析
小結