// Prepare this context for refreshing. //刷新容器 prepareRefresh(); // Tell the subclass to refresh the internal bean factory. //创建beanFactory,解析beandefinition配置并且完成beandefination注册,注册beanfactory ConfigurableListableBeanFactory beanFactory = obtainFreshBeanFactory(); // Prepare the bean factory for use in this context. //准备beanfactory,注入类加载器上下文以及post-processors prepareBeanFactory(beanFactory); // Allows post-processing of the bean factory in context subclasses. //设置beanFactory的后置处理 postProcessBeanFactory(beanFactory); // Invoke factory processors registered as beans in the context. //调用上下文注册为bean的工厂处理器 invokeBeanFactoryPostProcessors(beanFactory); // Register bean processors that intercept bean creation. //向beanfactory中注册所有的bean处理器 registerBeanPostProcessors(beanFactory); // Initialize message source for this context. //初始化国际化配置 initMessageSource(); // Initialize event multicaster for this context. //初始化事件监听器 initApplicationEventMulticaster(); // Initialize other special beans in specific context subclasses. //扩展用的,无实现 onRefresh(); // Check for listener beans and register them. //注册所有的监听器 registerListeners(); // Instantiate all remaining (non-lazy-init) singletons. //bean的生命周期(实例化所有剩余的(非延迟初始化)单例) finishBeanFactoryInitialization(beanFactory); //启动成功,发布对应事件 // Last step: publish corresponding event. finishRefresh();