Spring IoC 源碼精講
王濤
買這商品的人也買了...
-
$490$387 -
$474$450 -
$505Java 多線程與 Socket:實戰微服務框架
-
$600$468 -
$774$735 -
$207算法設計指南, 2/e (The Algorithm Design Manual, 2/e)
-
$780$616 -
$588$559 -
$505PostgreSQL 技術內幕:事務處理深度探索
-
$1,204Spring Cloud Alibaba 微服務架構實戰派 (上下冊)
-
$479$455 -
$880$695 -
$594$564 -
$658深入探索 JVM 垃圾回收:ARM 服務器垃圾回收的挑戰和優化
-
$780$616 -
$509RocketMQ 實戰
-
$505從零開始學 Spring Boot
-
$880$695 -
$880$695 -
$352二進制安全基礎
-
$1,280$1,011 -
$1,200$948 -
$880$695 -
$800$600 -
$850$638
相關主題
商品描述
本書從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方法分析
小結