刷新ApplicationContext底层,刷新步骤如下:
1. 准备刷新此上下⽂
a. 为刷新准备此上下⽂,设置其启动⽇期和活动标志,以及执⾏属性源的任何初始化。
2. 告诉⼦类刷新内部bean⼯⼚
a. 调⽤obtainFreshBeanFactory⽅法,其中包括refreshBeanFactory⽅法、getBeanFactory⽅法,refreshBeanFactory⽅法是⼀个抽
象⽅法,⼦类必须实现此⽅法才能执⾏实际的配置加载,⼦类要么创建⼀个新的bean⼯⼚并保存对它的引⽤,或者返回它持有的单个
BeanFactory实例。在后⼀种情况下,如果超过⼀次刷新上下⽂,则通常会抛出illeglastateException。
3. 准备BeanFactory以供在此上下⽂中使⽤。
a. 配置⼯⼚的标准上下⽂特征,例如上下⽂中的ClassLoader和post-processors。
4. 允许在上下⽂⼦类中对bean⼯⼚进⾏后处理。
springboot框架是干嘛的a. 在标准初始化后更新应⽤程序上下⽂的内部bean factory,所有的bean定义都将被加载,但是还没有bean被实例化。这允许在某些
ApplicationContext实现中注册特殊的BeanPostProcessor等。
5. 在上下⽂中调⽤注册为bean的⼯⼚处理器。
a. 实例化并调⽤所有注册的BeanFactoryPostProcessor bean,遵从明确的order值,如果给了order值的话,必须在单例实例化之前调
⽤。
6. 注册bean processors ⽤来拦截 bean的创建⾏为。
a. 注册并实例化所有的BeanPostProcessor bean.
7. 在应⽤上下⽂中初始化message source
8. 在应⽤上下⽂中初始化event multicaster。
9. 初始化特定上下⽂⼦类中的其他特殊bean。
10. 检查并注册listener beans
11. 实例化所有剩余(non-lazy-init)单例。
12. 最后⼀步,发布相关的事件。
所有操作完成后,还需要重置Spring核⼼中的公共内省缓存,因为我们可能不再需要单例bean的元数据了。。。
2.3 afterRefresh⽅法
这是⼀个空实现的⽅法,可进⾏扩展。

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。