refresh方法中调用方法的作用
1.synchronized代码块,给容器refresh加锁,避免容器处在refresh阶段,容器进行了初始化或销毁的操作
2.prepareRefresh //调用容器准备刷新的方法,获取容器当前时间,同时给容器设置同步标识
3.obtainFreshBeanFactory //告诉子类启动refreshBeanFactory方法,Bean定义资源文件的载入从子类的refreshBeanFactory()方法启动,里面有抽象方法,针对xml配置,最终创建内部容器,该容器负责Bean的创建与管理,此步会进行BeanDefinition的注册
4.prepareBeanFactory //注册一些容器中需要的系统Bean.例如classLoader,beanFactoryPostProcessor等
5.postProcessBeanFactory //允许容器的子类去注册postProcessor
6.invokeBeanFactoryPostProcessors //调用容器注册的容器级别的后置处理器
7.registerBeanPostProcessors //向容器注册Bean级别的后置处理器
8.initMessageSource //初始化国际化配置
9.initApplicationEventMulticaster //初始化事件发布者组件
10.onRefresh //在单例Bean初始化之前预留给子类初始化其他特殊bean的口子
11.registerListeners //向前面的事件发布者注册事件监听者
12.finishBeanFactoryInitialization //设置系统级别的服务,实例化所有非懒加载的单例
13.finishRefresh //触发初始化完成的回调方法,并发布容器刷新完成的事件给监听者
14.resetCommonCache //重置Spring内核中的公用缓存