SpringAOP[4.源码解析总结(1)]

看了很久的SpringAOP源码,现在对其实现有了一定了解,在此进行一下总结,废话不多说,现在开始:


首先先要理解几个概念,这几个概念正好对应着框架里面的class,这些概念都是我自己定义的,所以不是很准确:


1.Bean工厂:对应着源码中的BeanFactory,是AOP的灵魂,提供了所有获取实例的方法

2.上下文:对应着源码中的ApplicationContext,是AOP工厂的直接调用者,可以认为是对工厂的扩展和封装,为其增加了许多功能

3.读取本地资源:对应着源码中的BeanDefinitionReader,可以读取各种不同形式的配置信息

4.配置文件解析:对应着源码中的DocumentLoader,将配置信息转换为内存信息,其内部就是我们传统的解析xml文件的实现

5.bean配置解析::对应着源码中的BeanDefinitionDocumentReader,bean的解析处理执行者,里面跑着各种循环

6.:定义解析规则:对应着源码中的BeanDefinitionParserDelegate,根绝规则做的各种解析方法,由BeanDefinitionDocumentReader直接传参调用


接下来,以次看他们的具体内容


一、Bean工厂


首先整体的看一下类图


注:SimpleAliasRegistry继承SingletonBeanRegistry的线画错了,应该是DefaultSingletonBeanRegistry继承SingletonBeanRegistry

下面对这几个接口和实现做一下说明:

interface

  •      BeanFactory:bean的获取接口,包括获取bean,判断bean的特性等方法
  •      ListableBeanFactory:继承自BeanFactory,是factory的扩展,定义了很多批量的获取方法
  •      HierarchicalBeanFactory:同样继承自BeanFactory,正如其名定义了获得父工厂的方法
  •      AutowireCapableBeanFactory:同样继承自BeanFactory,是自动加载的扩展接口

  •      SingletonBeanRegistry:单例模式bean的注册接口,定义了对单例bean的注册,获取,判断等方法
  •      AliasRegistry:别名注册接口


首先先要说明两个实现类,图中的接口SimpleAliasRegistry继承画错了,应该画在是下面这个方法的

class

  •      SimpleAliasRegistry:AliasRegistry的实现类
  •      DefaultSingletonBeanRegistry:继承了SimpleAliasRegistry类,实现了SingletonBeanRegistry接口,但是addSingletonFactory这个方法的意思现在还不太明白,先做个标记


介绍完这两个类回来继续说接口

interface

  •      ConfigurableBeanFactory:继承了接口HierarchicalBeanFactory和SingletonBeanRegistry,HierarchicalBeanFactory接口甚至BeanFactory接口都只定义了属性的获取方法,而没有设置方法,ConfigurableBeanFactory就是扩展了其大部分定义方法和一些特殊方法
  •      ConfigurableListableBeanFactory:继承了ListableBeanFactory,AutowireCapableBeanFactory,ConfigurableBeanFactory接口的同时也扩展了一些方法,但单从名字上还不知道是做什么的
  •      BeanDefinitionRegistry:继承自AliasRegistry,是bean定义注册的接口


基本上所有接口都已介绍完毕,下面看看他们的实现

  •      FactoryBeanRegistrySupport:抽象类,继承自DefaultSingletonBeanRegistry类,从源码上看应该是增加了bean的缓存功能,但是定义成抽象类说明还需要下面实现类的支持
  •      AbstractBeanFactory:抽象类,继承了FactoryBeanRegistrySupport,并实现了ConfigurableBeanFactory接口,实现了bean的获取方法
  •      AbstractAutowireCapableBeanFactory:抽象类,继承了AbstractBeanFactory,实现了AutowireCapableBeanFactory接口,实现了自动加载,增加了缓存功能
  •      DefaultListableBeanFactory:第一个正式的使用类,继承自AbstractAutowireCapableBeanFactory,并且又实现了ConfigurableListableBeanFactory和BeanDefinitionRegistry接口
  •      XmlBeanFactory:继承自DefaultListableBeanFactory,可以加载xml的配置文件,但是已经不建议被使用了


到此,beanfactory的所有类就已经介绍完了,当然对于他内部的方法还有很多不了解,beanfactory是配合ApplicationContext使用的,而beanfactory的直接使用者就是ApplicationContext,所以去认识ApplicationContext的架构是了解beanfactory中方法的含义最好方法


下面将对ApplicationContext总结

未完待续....


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章