天天看點

容器的基礎 XmlBeanFactory(1)

容器的基礎 XmlBeanFactory(1)

這是第一篇Spring源碼分析,主要是為了找到繼續閱讀源碼的興趣,了解一個概況同時找了

ignoreDependencyInterface

ignoreDependencyType

深入分析了下。

連結

從頭看點這裡

下載下傳源碼、筆記以及對應的例子進入我的GitHub

參考連結

  1. 打開BeanFactory ignoreDependencyInterface方法的正确姿勢
  2. BeanFactoryPostProcessor詳解 - 憤怒的蘋果ext的部落格
  3. BeanFactoryPostProcessor和BeanPostProcessor的調用時點

概況

  1. 我們通過一個簡單例子切入源碼,閱讀spring-bean-test1,簡單了解擷取一個

    bean

    的過程
  2. 首先介紹了核心類

    DefaultListableBeanFactory

    ,其次按照在該類注釋中@see順序大緻了解下各個類
  3. 進入到

    XmlBeanFactory

    了解

    XmlBeanFactory

    DefaultListableBeanFactory

    的差別,了解構造過程
  4. 進入到

    AbstractAutowireCapableBeanFactory

    的構造函數,進而深入到

    ignoreDependencyInterface

    中檢視其作用,以及與

    ignoreDependencyType

    差別
  5. 最後通過小例子ignored-dependency-test來檢視

    ignoreDependencyType

    以及

    ignoreDependencyInterface

    是如何工作的在自動裝配的過程中忽略某些類

總結

  1. BeanFactoryPostProcessor

    Spring

    提供的一個擴充點,讓我們可以在所有

    bean

    都加載、注冊完成(還未初始化)的時候,允許我們做一些修改,例子中我們可以在自動注入的時候忽略某些屬性的注入,或者修改成員屬性的值
  2. ignoreDependencyType

    以及

    ignoreDependencyInterface

    兩者是不同的,平時

    ignoreDependencyType

    的功能已經足夠使用,而

    ignoreDependencyInterface

    是忽略接口中的

    set

    方法,進而在實作類中具有相同參數的

    set

    方法也會被忽略,進而對應的成員在自動裝配的時候被忽略,目的是為了某些重要的成員屬性(比如

    ApplicationContextAware

    BeanFactoryAware

    )統一交由架構進行注入。