容器的基礎 XmlBeanFactory(1)
這是第一篇Spring源碼分析,主要是爲了找到繼續閱讀源碼的興趣,瞭解一個概況同時找了
ignoreDependencyInterface
和ignoreDependencyType
深入分析了下。
鏈接
從頭看點這裏
下載源碼、筆記以及對應的例子進入我的GitHub
參考鏈接
- 打開BeanFactory ignoreDependencyInterface方法的正確姿勢
- BeanFactoryPostProcessor詳解 - 憤怒的蘋果ext的博客
- BeanFactoryPostProcessor和BeanPostProcessor的調用時點
概況
- 我們通過一個簡單例子切入源碼,閱讀spring-bean-test1,簡單瞭解獲取一個
bean
的過程 - 首先介紹了核心類
DefaultListableBeanFactory
,其次按照在該類註釋中@see順序大致瞭解下各個類 - 進入到
XmlBeanFactory
瞭解XmlBeanFactory
和DefaultListableBeanFactory
的區別,瞭解構造過程 - 進入到
AbstractAutowireCapableBeanFactory
的構造函數,進而深入到ignoreDependencyInterface
中查看其作用,以及與ignoreDependencyType
區別 - 最後通過小例子ignored-dependency-test來查看
ignoreDependencyType
以及ignoreDependencyInterface
是如何工作的在自動裝配的過程中忽略某些類
總結
BeanFactoryPostProcessor
是Spring
提供的一個擴展點,讓我們可以在所有bean
都加載、註冊完成(還未初始化)的時候,允許我們做一些修改,例子中我們可以在自動注入的時候忽略某些屬性的注入,或者修改成員屬性的值ignoreDependencyType
以及ignoreDependencyInterface
兩者是不同的,平時ignoreDependencyType
的功能已經足夠使用,而ignoreDependencyInterface
是忽略接口中的set
方法,從而在實現類中具有相同參數的set
方法也會被忽略,從而對應的成員在自動裝配的時候被忽略,目的是爲了某些重要的成員屬性(比如ApplicationContextAware
、BeanFactoryAware
)統一交由框架進行注入。