spring容器的refresh()创建刷新
1.prepareRefresh()刷新前的预处理
1)initPropertySources()初始化一些属性设置,子类自定义个性化的初始化方法
2)getEnvironment().validateRequiredProperties()检验属性的合法性
3)this.earlyApplicationEvents = new LinkedHashSet<>()保存容器中的一些早期事件
2.obtainFreshBeanFactory()获取BeanFactory
1)refreshBeanFactory()创建BeanFactory
创建DefaultListableBeanFactory beanFactory = createBeanFactory()创建一个默认工厂
设置工厂的id标识
2)getBeanFactory()【DefaultListableBeanFactory】返回上一步创建好的BeanFactory
3.prepareBeanFactory(beanFactory)BeanFactory的预准备工作(BeanFactory进行一些设置)
1)设置类加载器,支持的表达式解析器
2)添加部分的bean的后置处理器【ApplicationContextAwareProcessor】
3)设置忽略的自动装配接口
4)注册可以解析的自动装配,注册后能直接在任何组件中注入BeanFactory,ResourceLoader,ApplicationEventPublisher,ApplicationContext
5)添加部分的bean的后置处理器【ApplicationListenerDetector】
6)添加编译时的Aspectj支持
7)给BeanFactory中注册一些能用的组件
environment【ConfigurableEnvironment】配置环境
systemProperties【Map】系统属性
systemEnvironment【Map】系统环境
4.postProcessBeanFactory(beanFactory)准备工作完成后进行的后置处理工作
1)子类通过重写postProcessBeanFactory(ConfigurableListableBeanFactory beanFactory)在BeanFactory创建并与准备完成以后做进一步设置
======以上是BeanFactory创建及预准备工作=====
5.invokeBeanFactoryPostProcessors执行BeanFactory的后置处理器(为容器中的Bean注册工厂处理器)
BeanFactoryPostProcessor:BeanFactory的后置处理器&#x