Spring IoC 源碼精講

王濤

  • 出版商: 清華大學
  • 出版日期: 2022-09-01
  • 定價: $599
  • 售價: 8.5$509
  • 語言: 簡體中文
  • ISBN: 7302601313
  • ISBN-13: 9787302601319
  • 相關分類: Java 相關技術
  • 立即出貨

  • Spring IoC 源碼精講-preview-1
  • Spring IoC 源碼精講-preview-2
  • Spring IoC 源碼精講-preview-3
Spring IoC 源碼精講-preview-1

買這商品的人也買了...

商品描述

本書從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編寫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方法分析

 

小結