Spring 源码分析(一)容器的基本实现

扫码关注公众号:Java 技术驿站

发送:vip
将链接复制到本浏览器,永久解锁本站全部文章

【公众号:Java 技术驿站】 【加作者微信交流技术,拉技术群】

一:核心类的介绍

Spring中两个比较重要的类DefaultListableBeanFactory和XmlBeanDefinitionReader,其中:DefaultListableBeanFactory是整个bean加载的核心部分,是spring注册和加载bean的默认实现,它继承了AbstractAutowireCapableBeanFactory,实现了ConfigurableListableBeanFactory, BeanDefinitionRegistry。XmlBeanDefinitionReader的功能是对Spring的资源文件读取,解析及注册的功能。

1:DefaultListableBeanFactory类的结构图

20191102100635\_1.png

2:DefaultListableBeanFactory类结构图中各个类的作用

  • AliasRegistry 定义对alias的简单增删改等操作。
  • SimpleAliasRegistry 实现了AliasRegistry,主要使用map作为alias的缓存,使用的是ConcurrentHashMap。
  • SingletonBeanRegistry 定义对单例的注册及获取。
  • BeanFactory 定义获取bean或bean的各种属性。
  • DefaultSingletonBeanRegistry 对接口SingletonBeanRegistry的实现。
  • HierarchicalBeanFactory 继承BeanFactory,在BeanFactory的基础上增加获得父接口的方法。
  • BeanDefinitionRegistry 定义对BeanDefinition的各种增删改操作。
  • FactoryBeanRegistrySupport 在DefaultSingletonBeanRegistry的基础上增加对FactoryBean的特殊处
  • ConfigurableBeanFactory 提供配置Factory的各种方法。
  • ListableBeanFactory 根据各种条件获取bean的配置清单。
  • AbstractBeanFactory 综合了FactoryBeanRegistrySupport和ConfigurableBeanFactory的功能。
  • AbstractAutowireCapableBeanFactory 继承AbstractBeanFactory并对AutowireCapableBeanFactory进行了实现。
  • ConfigurableListableBeanFactory: BeanFactory的配置清单,指定忽略类型及接口等。
  • DefaultListableBeanFactory 综合上面所有功能,主要是对bean注册后的处理。

3:XmlBeanDefinitionReader 的类结构图

20191102100635\_2.png

4:XmlBeanDefinitionReader 类结构图中各个类的作用

  • ResourceLoader 根据路径加载资源文件,返回对应的Resource。
  • BeanDefinitionReader 定义资源文件读取并转换为BeanDefinition的各个功能。
  • EnvironmentCapable 定义获取Environment的方法。
  • DocumentLoader 定义从资源文件加载到转换为Document的方法。
  • AbstractBeanDefinitionReader 对BeanDefinitionReader, EnvironmentCapable的实现。
  • BeanDefinitionDocumentReader 定义读取Document并注册BeanDefinition的方法。
  • BeanDefinitionParserDelegate 定义解析Element的各个方法。

XmlBeanDefinitionReader 通过继承AbstractBeanDefinitionReader 的方法,可以使用ResourceLoader 的方法将资源文件路径转换为对应的Resource文件。通过DocumentLoader 对Resource文件进行转换,将其转换为Document文件。通过接口BeanDefinitionDocumentReader 的实现类DefaultBeanDefinitionDocumentReader对Document文件进行解析,并使用BeanDefinitionParserDelegate解析Element。


来源:http://ddrv.cn

赞(0) 打赏
版权归原创作者所有,任何形式的转载请联系博主:daming_90:Java 技术驿站 » Spring 源码分析(一)容器的基本实现

评论 抢沙发

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

微信扫一扫打赏