Spring容器初始化过程
1.prepareRefresh():初始化placeholder source,校验xml文件
2.创建bean容器,加载并注册bean。(bean并没有完成初始化,bean实例化未完成)
初始化一个DefautlListableBeanFactory,加载BeanDefintion到BeanFactory
3.prepareBeanFacotory:设置beanFactory的加载器,设置beanExpressionResovle,添加beanPostProccessort,实现了Aware相关接口,会负责回调。
为bean赋值,设置BeanFactory,ResourceLoader,ApplicationContextEventPublisher,ApplicationContext.注册ApplicationListenerDetector事件监听器。
注册一些特殊的bean(environment, systemProperties,systemEnvironment)
4.初始化单例bean,设置bean的属性,aware接口回调,BeanPostProccessor处理