Spring Bean

     從Spring框架中咱們知道,Spring的主角是Bean,Bean是由BeanFactory容器建立的,Bean先由BeanDefinitionReader讀入,再解釋成BeanDefinition,再註冊到BeanDefinitionRegistry上,最後由BeanDefinition生成Bean。

關鍵類結構和實現:框架

  1. BeanDefinition
    BeanDefinition用於描述Bean實例,利用BeanDefinition能夠建立Bean實例。
    BeanDefinition結構如圖所示:

    1) BeanDefinition 用於描述Bean實例,包括Bean的屬性值,構造參數等信息
    2) AbstractBeanDefinition BeanDefinition的實現
    3) RootBeanDefinition 從配置源中生成的BeanDefinition
    4) ChildBeanDefinition 從雙親BeanDefinition集成構造的BeanDefinition
    5) GenericBeanDefinition 標準BeanDefinition定義,支持設置雙親BeanDefinition,Spring2.5後是RootBeanDefinition和ChildBeanDefinition更好替代者
    6) AnnotatedGenericBeanDefinition 從註解中讀取生成BeanDefinition
     
  2. BeanDefinitionReader
    BeanDefinitionReader用於讀取資源生成BeanDefinition。
    BeanDefinitionReader結構如圖所示:

    1) BeanDefinitionReader 讀取BeanDefinition接口
    2) AbstractBeanDefinitionReader BeanDefinitionReader的實現
    3) XmlBeanDefinitionReader 從xml文件中讀取BeanDefinition
    4) PropertiesBeanDefinitionReader 從配置文件讀取BeanDefinition
    5) GroovyBeanDefinnitionReader 讀取Groovy語言定義的BeanDefinition
     
  3. BeanDefinitionDocumentReader
    XmlBeanDefinitionReader中真正的解析工做是由BeanDefinitionDocumentReader完成的。
    BeanDefinitionDocumentReader結構如圖所示:

    1) BeanDefinitionDocumentReader解析BeanDefinition的xml文件,被XmlBeanDefinitionReader使用
    2) DefaultBeanDefinitionDocumentReader BeanDefinitionDocumentReader的默認實現
     
  4. BeanDefinitionRegistry
    BeanDefinitionRegistry用於註冊BeanDefinition。DefaultListableBeanFactory繼承了它實現BeanDefinition註冊功能。
    BeanDefinitionRegistry結構如圖所示:

    1) BeanDefinitionRegistry 用於註冊BeanDefinition的接口
    2) DefaultListableBeanFactory 繼承BeanDefinitionRegistry,提供BeanDefinition註冊服務
     
  5. ReaderContext
    1) ReaderContext 用於封裝BeanDefinition讀取過程當中的上下文,包括Resource, Reader等
    2) XmlReaderContext 用於封裝XmlBeanDefinition讀取過程當中的上下文
     
  6. Utils 1) BeanDefinitionReaderUtils BeanDefinitionReader內部工具類,用於註冊BeanDefinition等 2) BeanUtils 工具類用於建立Bean,檢查Bean屬性,拷貝Bean屬性等
相關文章
相關標籤/搜索