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

阅读更多

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.

你可能感兴趣的:(Web,Spring,Bean,prototype)