转载

spring学习之源码分析--ListableBeanFactory

ListableBeanFactory

ListableBeanFactory实现了BeanFactory接口, Listable意思是能列在单子上的,ListableBeanFactory可以枚举它们的所有bean信息,而不用一个个通过bean的名称或类型一个个查找。如果容器是有层级的,比如实现了HierarchicalBeanFactory接口,返回值不考虑层级的信息,只读取当前容器定义的信息。

类结构

spring学习之源码分析--ListableBeanFactory

方法解析

1、BeanDefinition相关

主要有判断是否有包含某个bean,当前bean的总数以及bean的名称数组。如果注册到容器中,但不是BeanDefinition的,不会统计在内。

2、getBeanNamesOfType

根据条件,返回bean名称的数组。

3、getBeansOfType

根据条件,返回bean名称和bean的数组。

FactoryBean在创建对象的时候会对对象进行初始化,如果当前FactoryBean中不包含当前所要创建的bean,会查找父类FactoryBean来查找,因此如果有层级的话,也是读取到顶级容器的,如果要读取当前容器的,需要使用BeanFactoryUtils的beanNamesForTypeIncludingAncestors的方法。

这两个方法,都有includeNonSingletons和allowEagerInit的参数。includeNonSingletons表示是否包含单例,allowEagerInit表示是否包含延迟初始化单例对象和对象。

4、Annotation相关

主要有通过注解返回bean数组、通过注解返回bean名称和bean的数组、查找bean的注解。

原文  https://segmentfault.com/a/1190000020896528
正文到此结束
Loading...