spring學習之源碼分析--ListableBeanFactory

ListableBeanFactory

ListableBeanFactory實現了BeanFactory接口, Listable意思是能列在單子上的,ListableBeanFactory能夠枚舉它們的全部bean信息,而不用一個個經過bean的名稱或類型一個個查找。若是容器是有層級的,好比實現了HierarchicalBeanFactory接口,返回值不考慮層級的信息,只讀取當前容器定義的信息。segmentfault

類結構

image.png

方法解析

一、BeanDefinition相關
主要有判斷是否有包含某個bean,當前bean的總數以及bean的名稱數組。若是註冊到容器中,但不是BeanDefinition的,不會統計在內。
二、getBeanNamesOfType
根據條件,返回bean名稱的數組。
三、getBeansOfType
根據條件,返回bean名稱和bean的數組。
FactoryBean在建立對象的時候會對對象進行初始化,若是當前FactoryBean中不包含當前所要建立的bean,會查找父類FactoryBean來查找,所以若是有層級的話,也是讀取到頂級容器的,若是要讀取當前容器的,須要使用BeanFactoryUtils的beanNamesForTypeIncludingAncestors的方法。
這兩個方法,都有includeNonSingletons和allowEagerInit的參數。includeNonSingletons表示是否包含單例,allowEagerInit表示是否包含延遲初始化單例對象和對象。
四、Annotation相關
主要有經過註解返回bean數組、經過註解返回bean名稱和bean的數組、查找bean的註解。數組

相關文章
相關標籤/搜索