finishRefresh()
/**
* 完成上下文的刷新操作,执行LifecycleProcessor的onRefresh()方法并发布一个ContextRefreshedEvent事件
* Finish the refresh of this context, invoking the LifecycleProcessor's
* onRefresh() method and publishing the
* {@link org.springframework.context.event.ContextRefreshedEvent}.
*/
protected void finishRefresh() {
// Clear context-level resource caches (such as ASM metadata from scanning).
// 清空上下文级别的源信息缓存(比如扫描的ASM元数据)
clearResourceCaches();
// Initialize lifecycle processor for this context.
// 初始化上下文的生命周期处理器
initLifecycleProcessor();
// Propagate refresh to lifecycle processor first.
// 首先获取一个生命周期处理器,然后调用它的onRefresh方法
getLifecycleProcessor().onRefresh();
// Publish the final event.
// 发布最后的事件ContextRefreshedEvent
publishEvent(new ContextRefreshedEvent(this));
// Participate in LiveBeansView MBean, if active.
// 如果配置了MBeanServer,就完成在MbeanServer上的注册
LiveBeansView.registerApplicationContext(this);
}
这是在bean的实例化,初始化完成后的一些操作,例如生命周期变更的回调,发布applicationContext刷新完成的广播等