最重要的第二步,bean的解析,注册已经完成了,下面我们开始第三步:
三、prepareBeanFactory :
1 主要就是设置beanFactory的各种属性,包括类加载器
2.添加beanPostProcessor
3.设置自动装配时,需要忽略的类
4.注册几个特殊的bean
5. 给beanPostProcessor注册监听器
6.如果没有定义environment这个bean,spring会注册一个
7.如果没有定义systemProperties这个bean,spring会注册一个
8.如果没有定义systemEnvironment这个bean,spring会注册一个
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
四、postProcessBeanFactory
空函数,用户可以添加bean注册后,自定义的一些实现
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
五、invokeBeanFactoryPostProcessors(beanFactory) : 调用 BeanFactoryPostProcessor 各个实现类的postProcessBeanFactory(factory) 方法
1. 调用时,先调用PriorityOrdered,也就是高优先级的BeanDefinitionRegistryPostProcessors
2. 然后,再调用ordered,普通级的BeanDefinitionRegistryPostProcessors
3. 最后,调用其他的BeanDefinitionRegistryPostProcessors
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
六、registerBeanPostProcessors(beanFactory) : BeanFactoryPostProcessor前面已经完成,此时开始注册BeanPostProcessor的实现类,此接口2个方法,postProcessBeforeInitialization 在bean初始化之前执行;postProcessAfterInitialization在bean初始化之后执行。
1. 先注册PriorityOrdered,也就是高优先级的BeanPostProcessors
2. 再注册Ordered,也就是普通优先级的BeanPostProcessors
3. 最后,注册所有普通的BeanPostProcessors
也就是加入到本地缓存的列表beanPostProcessors
+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
七、initMessageSource :国际化相关,不展开
+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
八、initApplicationEventMulticaster: 初始化当前ApplicationContext事件的广播器
+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
九、onRefresh : 在这里初始化一些特殊的bean,在初始化singleton beans之前
空函数,可以自己定义
+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
十、registerListeners: 注册事件监听器,监听器实现ApplicationListener接口