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總結

未完待續....


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