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属性对资源文件进行读取和注册.

首先我们可以看下结构:

aa

bb

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进行解析.

spring-3-pic

1.ResourceLoader: 定义资源加载器,主要用于根据给定的资源文件地址返回对应的Resource.

2.BeanDefinitionReader: 主要定义资源文件读取并转换为BeanDefinition的各个功能.

3.EnvironmentCapable: 定义获取Environment方法.

4.DocumentLoader: 定义从资源文件加载到转换为Document的功能.

5.AbstractBeanDefinitionReader: 对EnvironmentCapable,BeanDefinitionReader类定义的功能进行实现.

6.BeanDefinitionDocumentReader: 定义获取Document并注册BeanDefinition功能.

7.BeanDefinitionParserDelegate: 定义解析Element的各种方法.


下面看下XmlBeanFactory的调用时序图,了解做了什么,

XmlBeanFactory-1

主要是弄明白,resource是如何封装的和XmlBeanFactory是如何封装的.

0 0
原创粉丝点击