89 lines
2.2 KiB
Markdown
89 lines
2.2 KiB
Markdown
|
# 第二章刷新
|
|||
|
|
|||
|
synchronized使用当前类中final对象。
|
|||
|
|
|||
|
## 获取启动指标StartupStep
|
|||
|
|
|||
|
```java
|
|||
|
StartupStep contextRefresh = this.applicationStartup.start("spring.context.refresh");
|
|||
|
```
|
|||
|
|
|||
|
## 刷新前预处理prepareRefresh()
|
|||
|
|
|||
|
1. 记录启动时间
|
|||
|
2. 设置当前状态未关闭
|
|||
|
3. 设置当前状态活跃
|
|||
|
4. 初始化上下文资源中的占位符,initPropertySources();
|
|||
|
5. 校验上下文可解析,getEnvironment().validateRequiredProperties();
|
|||
|
6. 初始化监听器earlyApplicationListeners(LinkedHashSet)
|
|||
|
7. 初始化事件earlyApplicationEvents(LinkedHashSet)
|
|||
|
|
|||
|
## 刷新内部类obtainFreshBeanFactory()
|
|||
|
|
|||
|
1. 刷新工厂refreshBeanFactory()
|
|||
|
1. 销毁类
|
|||
|
2. 关闭工厂
|
|||
|
3. 创建新的工厂
|
|||
|
4. 设置工厂customizeBeanFactory序列化类名加对象十六进制,弱引用。
|
|||
|
5. 定制工厂设置是否可重写,是否可循环引用
|
|||
|
6. 加载工厂loadBeanDefinitions,XmlBeanDefinitionReader
|
|||
|
2. 返回工厂getBeanFactory()
|
|||
|
|
|||
|
## 装配工厂prepareBeanFactory
|
|||
|
|
|||
|
1. 设置加载类
|
|||
|
2. 是否支持spel
|
|||
|
3. 设置Property编辑器
|
|||
|
4. 设置类后置处理器(post processor)BeanPostProcessor,添加感知处理器AwareProcessor
|
|||
|
5. 忽略加载的其他感知接口
|
|||
|
6. 注册解析接口:BeanFactory、ResourceLoader、ApplicationEventPublisher、ApplicationContext
|
|||
|
7. 添加后置处理器ApplicationListenerDetector内部类检测
|
|||
|
8. 图片设置
|
|||
|
9. 加载环境中的配置信息
|
|||
|
|
|||
|
## 内部类处理配置postProcessBeanFactory(beanFactory);
|
|||
|
|
|||
|
## 设置启动步骤spring.context.beans.post-process
|
|||
|
|
|||
|
## 将工厂注册为bean,invokeBeanFactoryPostProcessors(beanFactory)
|
|||
|
|
|||
|
## 注册工厂bean,registerBeanPostProcessors(beanFactory)
|
|||
|
|
|||
|
## 启动步骤spring.context.beans.post-process完成
|
|||
|
|
|||
|
## 初始化message source,initMessageSource()
|
|||
|
|
|||
|
## 初始化事件多播器initApplicationEventMulticaster()
|
|||
|
|
|||
|
## onRefresh()
|
|||
|
|
|||
|
## 注册监听器registerListeners()
|
|||
|
|
|||
|
## 初始化剩余信息finishBeanFactoryInitialization(beanFactory)
|
|||
|
|
|||
|
## 完成刷新
|
|||
|
|
|||
|
1. 清空资源缓存
|
|||
|
2. 初始化生命周期处理器
|
|||
|
3. 启动生命周期
|
|||
|
4. 发布事件
|
|||
|
5. NativeDetector
|
|||
|
|
|||
|
## 异常处理
|
|||
|
|
|||
|
1. 销毁之前创建的单例
|
|||
|
2. 设置活跃状态为false
|
|||
|
3. 抛出异常
|
|||
|
|
|||
|
## finally
|
|||
|
|
|||
|
1. 清空缓存
|
|||
|
2. 结束spring.context.refresh
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|