spring的加载过程(web) (9)--registerListeners

本文详细介绍了Spring框架中监听器的注册过程,包括静态特殊监听器的注册及通过ListableBeanFactory获取实现了ApplicationListener接口的bean,并探讨了getBeansOfType方法的具体实现。

spring的加载过程(web) (9)--registerListeners 检测监听器bean并且注册他们

方法定义:添加实现了ApplicationListener作为监听器的bean.不影响其他监听器,那些没有被添加的的bean.

 

1)首先注册静态的特殊监听器。

2)添加根据ListableBeanFactory#getBeansOfType(Class type, boolean includePrototypes, boolean allowEagerInit)方法,返回的实现了ApplicationListener接口的bean.包括设置了prototype的bean

 

//======================================================================

 

ListableBeanFactory#getBeansOfType(Class type, boolean includePrototypes, boolean allowEagerInit)

返回与规定的实体类型(包括子类)相配的bean实例, 在FactoryBeans情况下从bean定义或者getObjectType的值判断。 第二个参数设定是否包含设置了pototype类型的bean,第三个参数是设定是否初始化bean.

 

DefaultListableBeanFactory#getBeansOfType(Class type, boolean includePrototypes, boolean allowEagerInit)类默认实现。

实际调用getBeanNamesForType(Class type, boolean includePrototypes, boolean allowEagerInit)

//复杂...,略过..

1)检查所有bean定义。循环判断没一个bean定义.

<1>首先判断是否是别名。

2)检查单例,捕获手动注册的单例.

//getBeansOfType把getBeanNamesForType结果转换。

3)把String[] 转换为map.

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值