Spring应用上下文启动准备阶段
- AbstractApplicationContext#prepareRefresh()方法
– 启动时间-startup Date
– 状态标识-closed(false)、active(true)
– 初始化 Propertysources - initPropertySources()
– 检验Environment中必须属性
– 初始化事件监听器集合
– 初始化早期Spring事件集合
BeanFactory创建阶段
- AbstractApplicationContext#obtainFreshBeanFactory()方法
•刷新 Spring 应用上下文底层 BeanFactory - refreshBeanFactory()
•销毁或关闭BeanFactory,如果已存在的话
•仓腱 BeanFactory - createBeanFactory()
•设置 BeanFactory Id
•设置“是否允许 BeanDefinition 重复定义”-customizeBeanFactory(DefaultListableBeanFactory)
•设置“是否允许循环引用(依赖)"-customizeBeanFactory(DefaultListableBeanFactory)
• 加载 BeanDefinition - loadBeanDefinitions(DefaultListableBeanFactory) 方法
•关联新建BeanFactory到Spring应用上下文
•返回 Spring 应用上下文底层 BeanFactory - getBeanFactory()
BeanFactory准备阶段
AbstractApplicationConte