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的注解。数组

相关文章
相关标签/搜索