本文引自我的个人博客: sunmingshuai.coding.me
我们回到refresh()
方法 继续往下解读 下面这几个方法比较简洁 或者说简单 我们只是简单的列出 就不再作过多解读饿了
// spring可扩展的另一个实现:BeanPostProcessor 在调用beanClass实例化前后或者调用initMethod方法的前后会调用接口方法
// 较常见的硬编码的BPP:ApplicationContextAwareProcessor,ApplicationListenerDetector
registerBeanPostProcessors(beanFactory);
//国际化
initMessageSource();
//广播
initApplicationEventMulticaster();
//empty
onRefresh();
// 注册listener
registerListeners();
registerBeanPostProcessors(beanFactory)
方法是把BeanFactory
中声明的BeanPostProcessor
的实例加入到beanFactory
中 注意此时的BeanPostProcessor
并没有成形 还停留在BeanDefinition
初级阶段 这个时候我们要通过beanFactory.getBean(name,requiredType)
方法获取BeanPostProcessor
实例 然后再加入到beanFactory
中
getBean(name,requiredtype)
是个很复杂很重要的方法 后面我们会讲到
component-scan做了些什么:源码解读 文章最后介绍的一个方法registerComponents()
有介绍到注册的一些处理注解的BPP
initApplicationEventMulticaster()
方法用来注册一个广播器
onRefresh()
方法留空 留给字类继承实现
registerListeners()
将相关listener
加入到我们上面生成的applicationEventMulticaster
中