<a href="https://s1.51cto.com/wyfs02/M00/A6/AE/wKioL1nYc9-AHBHzAABMnTu4_Ho866.png" target="_blank"></a>
BeanFactory是一個頂級接口,下面看下它是幹什麼的。
<a href="https://s2.51cto.com/wyfs02/M02/07/FC/wKiom1nYdGHQ7yM7AACxQJuUQic126.png" target="_blank"></a>
這裡說了,它是通路Spring Bean容器的根接口,是Bean容器的基本視圖。
它的一些子接口,比如ListableBeanFactory和ConfigurableBeanFactory都有特别的而且不同的用途。
實作了這個接口的對象維護了許多的Bean定義,每一個Bean定義用一個名字來唯一辨別。
下面看一下它的子接口以及實作類
<a href="https://s1.51cto.com/wyfs02/M02/A6/AE/wKioL1nYdcrBi6PGAABxkmbPJio440.png" target="_blank"></a>
有三個子接口直接繼承自BeanFactory,他們分别是ListableBeanFactory、HierarchicalBeanFactory和AutowireCapableBeanFactory。
下面分别看一下它們各自有什麼樣的用途:
<a href="https://s2.51cto.com/wyfs02/M01/A6/AE/wKioL1nYdtuhLGulAAEJ3E46cYc156.png" target="_blank"></a>
<a href="https://s1.51cto.com/wyfs02/M02/07/FC/wKiom1nYd3qR2eOgAABvHdoAV7M089.png" target="_blank"></a>
在這個接口的注釋中說了,說這是BeanFactory的一個擴充接口,它可以列舉出所有的Bean示例,而不是當用戶端請求的時候去根據名字一個一個的查找。
<a href="https://s1.51cto.com/wyfs02/M00/07/FC/wKiom1nYeQ_Bp6AtAABks7fJLL0998.png" target="_blank"></a>
HierarchicalBeanFactory是一種能夠分層的Bean Factory。什麼意思呢?什麼叫有層級?什麼叫分層?我的了解是,可以被繼承。
<a href="https://s4.51cto.com/wyfs02/M00/A6/AE/wKioL1nYecHDq5NUAAB2dfhlQ0o145.png" target="_blank"></a>
<a href="https://s5.51cto.com/wyfs02/M02/07/FC/wKiom1nYekbxdkZ5AAArrpq_CYY187.png" target="_blank"></a>
AutowireCapableBeanFactory有自動裝配的能力。
最後,我們看一下DefaultListableBeanFactory
<a href="https://s5.51cto.com/wyfs02/M00/A6/AE/wKioL1nYezeSbWY1AAE8cHmdbM8958.png" target="_blank"></a>
這個類直接或間接的實作了那三個接口,也就是說上面說的三種特性它都有。
文檔中也說了,他是一個成熟的Bean Factory。
它最典型的用法是在Bean被通路之前注冊所有的Bean。是以,在一個本地的Bean定義表中查找是很廉價的操作。
本文轉自 手不要亂摸 51CTO部落格,原文連結:http://blog.51cto.com/5880861/1970615