1.spring-bean-1工程源码浅析(来源郝佳的书)
来源:互联网 发布:淘宝网铁皮剪刀 编辑:程序博客网 时间:2024/04/29 04:46
spring-bean 的两个核心的类:DefaultListableBeanFactory , XmlBeanDefinitionReader
1.DefaultListableBeanFactory
XmlBeanFactory继承自DefaultListableBeanFactory,而DefaultListableBeanFactory是整个bean加载的核心部分,是spring注册及加载bean的默认实现,而对于XmlBeanFactory与DefaultListableBeanFactory不同的地方其实是在XmlBeanFactory中使用了定义的XML读取器XmlBeanDefinitionReader,实现了个性化的BeanDefinitionReader读取,DefaultListableBeanFactory继承了AbstractAutowireCapableBeanFactory并实现了ConfigurableListableBeanFactory以及BeanDefinitionRegistry接口.
XmlBeanFactory对DefaultListableBeanFactory类进行了扩展,主要用于从xml文档中读取BeanDefinition,对于注册及获取Bean都是使用从父类DefaultListableBeanFactory继承的方法去实现,而唯独与父类不同的个性化实现就是增加了XmlBeanDefinitionReader类型的reader属性,在XmlBeanFactory中主要使用Reader属性对资源文件进行读取和注册.
首先我们可以看下结构:
1.AliasRegistry: 定义了对alias的简单操作,registerAlias,removeAlias,isAlias,getAliases.
2.SimpleAliasRegistry:主要适用map作为alias的缓存,并对接口AliasRegistry进行实现.
3.SingletonBeanRegistry:定义对单例的注册及获取.
4.BeanFactory:定义获取bean及bean的各种属性.
5.DefaultSingletonBeanRegistry:对接口SingletonBeanRegistry各函数的实现及对单例bean的一些常用函数的扩展.
6.HierarchicalBeanFactory:继承BeanFactory也就是在BeanFactory定义功能的基础上增加了对parentFactory的支持.
7.BeanDefinitionRegistry: 定义对BeanDefinition的各种增删改操作.
8.FactoryBeanRegistrySupport:在DefaultSingletonBeanRegistry基础上增加了对FactoryBean的特殊处理功能.
9.ConfigurableBeanFactory: 提供factory的各种方法.
10.ListableBeanFactory:继承BeanFactory接口,根据各种条件获取bean的配置清单.
11.AbstractBeanFactory:综合FactoryBeanRegistrySupport和ConfigurableBeanFactory 的方法.
12.AutowireCapableBeanFactory: 继承BeanFactory,提供创建bean,自动注入,初始化以及应用bean的后处理器.
13.AbstractAutowireCapableBeanFactory:综合AutowireCapableBeanFactory和AbstractBeanFactory的方法.
14.ConfigurableListableBeanFactory:BeanFactory配置清单, 指定忽略类型及接口等.
15.DefaultListableBeanFactory:综合上面的功能,主要是对Bean注册后的处理.
XmlBeanFactory对DefaultListableBeanFactory类进行了扩展,主要用于从xml文档中读取BeanDefinition,对于注册及获取Bean都是使用从父类DefaultListableBeanFactory继承的方法去实现,而唯独与父类不同的个性化实现就是增加了XmlBeanDefinitionReader类型的reader属性.在XmlBeanFactory中主要使用reader属性对资源文件进行读取和注册.
2.XmlBeanDefinitionReader
xml配置文件的读取时spring中主要的功能,因为spring的大部分功能都是以配置作为切入点的,那么我们可以从XmlBeanDefinitionReader中梳理一下资源文件读取,解析及注册的大致脉络.
(1). 通过继承自AbstractBeanDefinitionReader中的方法,来使用ResourceLoader将资源路径转换为对应的Resource文件.
(2). 通过DocumentLoader对Resource文件进行转换,将Resource文件转换为Document文件.
(3). 通过实现接口BeanDefinitionDocumentReader的DefaultBeanDefinitionDocumentReader类对Document进行解析,并使用BeanDefinitionParserDelegate对Element进行解析.
1.ResourceLoader: 定义资源加载器,主要用于根据给定的资源文件地址返回对应的Resource.
2.BeanDefinitionReader: 主要定义资源文件读取并转换为BeanDefinition的各个功能.
3.EnvironmentCapable: 定义获取Environment方法.
4.DocumentLoader: 定义从资源文件加载到转换为Document的功能.
5.AbstractBeanDefinitionReader: 对EnvironmentCapable,BeanDefinitionReader类定义的功能进行实现.
6.BeanDefinitionDocumentReader: 定义获取Document并注册BeanDefinition功能.
7.BeanDefinitionParserDelegate: 定义解析Element的各种方法.
下面看下XmlBeanFactory的调用时序图,了解做了什么,
主要是弄明白,resource是如何封装的和XmlBeanFactory是如何封装的.
- 1.spring-bean-1工程源码浅析(来源郝佳的书)
- Spring获取Bean 源码浅析
- 浅析Spring IoC源码(十)Spring Bean的初始化顺序
- spring 中bean的各种管理(来源:复制)
- 做一个合格的程序猿之浅析Spring IoC源码(十)Spring Bean的初始化顺序
- Spring之bean加载源码阅读工程搭建
- Spring 源码解析错误来源
- 源码的来源
- spring源码初步学习-bean的加载
- Spring源码之bean的加载(一)
- spring源码学习 - 配置文件bean的初始化
- Spring源码解析之Bean的加载
- spring源码解读 Bean的依赖注入
- Spring源码学习--Bean的生命周期
- Spring源码解析-bean的加载
- Spring源码(四)-bean的加载(上)
- Spring源码(五)-bean的加载(下)
- spring中扫描bean的源码解析
- 8-LTE EMM and ECM States
- 2015 亚洲区域赛长春赛区网络赛解题报告(9/13)
- C++,boost智能指针
- 2015 ACM/ICPC Asia Regional Changchun Online(1002)
- CXF 框架拦截器
- 1.spring-bean-1工程源码浅析(来源郝佳的书)
- 1041. 考试座位号(15)
- sizeof函数
- 大东南锂电池顺利通过国家实验室鉴定
- 3步带你快速了解特斯拉“巨大充电宝”
- 携不符合安全标准充电宝禁止登机
- 对HDFS进行操作——笔记
- CATransition转场动画
- 滚动视图UIScrollView、UIPageControl