一 继承关系

该接口是对BeanFactory的扩展,允许预加载bean定义的BeanFactory可以实现此接口 其目的在于使实现它的BeanFactory能够枚举所有的Bean 该接口不支持分层结构(对于继承了HierarchicalBeanFactory的BeanFactory来说) 也即该接口只能枚举当前facotry的Bean 除getBeanNamesOfType,getBeansOfType方法外,其他方法也将忽略由SingletonBeanRegistry的方法 注册的Singleton Bean 除getBeanDefinitionCount和containsBeanDefinition外的方法不要频繁使用,性能很慢

二 定义方法

        /**
根据给出的BeanName判断是否包含该Bean定义,忽略由SingletonBeanRegistry的方法注册的Singleton Bean
*/
boolean containsBeanDefinition(String beanName); /**
返回Bean定义的数目,忽略由SingletonBeanRegistry的方法注册的Singleton Bean
*/
int getBeanDefinitionCount(); /**
返回所有Bean的BeanName组成的String数组
*/
String[] getBeanDefinitionNames(); /**
根据提供的类型返回匹配的BeanName数组
只检测顶层Bean,忽略嵌套Bean
对于FactoryBean,当提供的类型匹配FactoryBean.getObjectType时返回BeanName
当提供的类型匹配FactoryBean时返回&BeanName
*/
String[] getBeanNamesForType(ResolvableType type); String[] getBeanNamesForType(@Nullable Class<?> type);
/**
* includeNonSingletons:判断是否匹配除Singleton外的其他scope
* allowEagerInit: false只匹配FactoryBean本身,true时还匹配FactoryBean.getObjectType()
*/
String[] getBeanNamesForType(@Nullable Class<?> type, boolean includeNonSingletons, boolean allowEagerInit); /**
根据提供的类型返回匹配的Bean实例数组
只检测顶层Bean,忽略嵌套Bean
对于FactoryBean,当提供的类型匹配FactoryBean.getObjectType时返回BeanName
当提供的类型匹配FactoryBean时返回&BeanName
*/
<T> Map<String, T> getBeansOfType(@Nullable Class<T> type) throws BeansException; /**
作用同上
includeNonSingletons:判断是否匹配除Singleton外的其他scope
allowEagerInit: false只匹配FactoryBean本身,true时还匹配FactoryBean.getObjectType()
*/
<T> Map<String, T> getBeansOfType(@Nullable Class<T> type, boolean includeNonSingletons, boolean allowEagerInit)
throws BeansException; /**
根据提供的注解类型找到对于的BeanName数组,
不创建实例, 但FactoryBean类型将被初始化,因为该方法考虑FactoryBean创建的对象
*/
String[] getBeanNamesForAnnotation(Class<? extends Annotation> annotationType); /**
根据提供的注解类型找到对于的Bean实例数组,
FactoryBean类型将被初始化,因为该方法考虑FactoryBean创建的对象
*/
Map<String, Object> getBeansWithAnnotation(Class<? extends Annotation> annotationType) throws BeansException;
/**
根据提供的注解类型和beanNaeme找到对应的Bean,Bean的类类型本身找不到,则遍历它的
接口和超类
如果不存在该Bean,则抛出NoSuchBeanDefinitionException
如果该Bean不支持该注解类型则返回null
*/
@Nullable
<A extends Annotation> A findAnnotationOnBean(String beanName, Class<A> annotationType) throws NoSuchBeanDefinitionException;

由于ApplicationContext实现了这个接口,所以ApplicationContext实现的容器都可以调用这些方法,根据类型获取Bean都是开发中常用的方法

springIOC源码接口分析(五):ListableBeanFactory的更多相关文章

  1. springIOC源码接口分析(九):Environment

    先贴一下接口继承关系图,spring容器启动的时候会初始化环境,所以此接口相关接口非常有必要进行了解: 一 PropertyResolver接口 Environment继承了该接口,PropertyR ...

  2. springIOC源码接口分析(三):ApplicationContext

    一 新增方法 主要都是获取容器基本信息的一些接口,比如获取名称,id和启动时间戳,获取AutowireCapableBeanFactory等接口 二 继承接口 ApplicationContext继承 ...

  3. springIOC源码接口分析(八):AutowireCapableBeanFactory

    参考博文: https://blog.csdn.net/f641385712/article/details/88651128 一 接口规范 从宏观上看,AutowireCapableBeanFact ...

  4. springIOC源码接口分析(十一):ConfigurableApplicationContext

    一 实现接口 关系图: ConfigurableApplicationContext接口实现了三个接口,ApplicationContext, Lifecycle, Closeable, Applic ...

  5. springIOC源码接口分析(七):ApplicationEventPublisher

    一 定义方法 此接口主要是封装事件发布功能的接口,定义了两个方法: /** * 通知应用所有已注册且匹配的监听器此ApplicationEvent */ default void publishEve ...

  6. springIOC源码接口分析(六):ResourceLoader

    参考博客: https://www.cnblogs.com/jixp/articles/10702486.html 一 定义方法 Spring提供了ResourceLoader接口用于实现不同的Res ...

  7. springIOC源码接口分析(四):MessageSource

    一 定义方法 MessageSource接口用于支持信息的国际化和包含参数的信息的替换 这个接口定义了三个方法: public interface MessageSource { /** * 解析co ...

  8. springIOC源码接口分析(二):ConfigurableBeanFactory

    一 继承功能 1 SingletonBeanRegistry接口 此接口是针对Spring中的单例Bean设计的.提供了统一访问单例Bean的功能,类中定义了以下方法: 2 HierarchicalB ...

  9. springIOC源码接口分析(一):BeanFactory

    一 应用场景 BeanFactory接口定义了IOC容器的最基本功能,提供了容器应该具有的功能规范,所有的容器都应该实现这个接口 BeanFactory设计了getBean方法用来获取容器中的Bean ...

随机推荐

  1. Oracle 11g静默安装

    1.检查安装包 安装依赖包 yum -y install gcc make binutils gcc-c++ compat-libstdc++-33 elfutils-libelf-devel elf ...

  2. 页面显示jsp源码问题

    问题错误在于WEB.XML 将/*改为*即可

  3. 洛谷$P4503\ [CTSC2014]$企鹅$QQ$ 哈希

    正解:哈希 解题报告: 传送门$QwQ$ 直接$O(len)$枚举哪一位,然后把这一位删了重新拼接起来,存桶里查下就成 $over$? 主要的难点大概在卡哈希+卡常$QAQ$ #include< ...

  4. html1,初识html

    vs code编辑器 安装插件 chinese 中文支持 open in browser 快速预览文件 view in browser 快捷键 快捷键 描述 shift + end 选中从光标到行尾 ...

  5. python利用scapy嗅探流量

    能实时监测流量, 只显示有问题的流量, 可疑流量要显示出在那个数据包里 所有流量都保存到为pcap 每5000个包保存一个 第3个自动下载到本地       def sniff(count=0, st ...

  6. Android系统启动过程分析

    Android系统启动过程分析 一.Android平台架构 首先贴一张Android系统架构图方便理解整个Android架构,这可以让我们从整体上对整个启动流程有个大概认知. 可以看出整个架构由5部分 ...

  7. 3 分钟带你深入了解 Cookie、Session、Token

    经常会有用户咨询,CDN 是否会传递 Cookie 信息,是否会对源站 Session 有影响,Token 的防盗链配置为什么总是配置失败?为此,我们就针对 Cookie.Session 和 Toke ...

  8. python 多进程处理图像,充分利用CPU

    默认情况下,Python程序使用一个CPU以单个进程运行.不过如果你是在最近几年配置的电脑,通常都是四核处理器,也就是有8个CPU.这就意味着在你苦苦等待Python脚本完成数据处理工作时,你的电脑其 ...

  9. 源码分析Kafka 消息拉取流程

    目录 1.KafkaConsumer poll 详解 2.Fetcher 类详解 本节重点讨论 Kafka 的消息拉起流程. @(本节目录) 1.KafkaConsumer poll 详解 消息拉起主 ...

  10. SpringCloud之Ribbon(四)

    一:Ribbon是什么? Ribbon是Netflix发布的开源项目,主要功能是提供客户端的软件负载均衡算法,将Netflix的中间层服务连接在一起.Ribbon客户端组件提供一系列完善的配置项如连接 ...