0
点赞
收藏
分享

微信扫一扫

spring10-refresh()

spring之启动流程

  1. spring启动主要做的几件事情
  1. 构造一个beanFactory对象
  2. 解析配置类,得到beanDefiniton并注册到beanfactory中
  1. 比如解析@ComponentScan
  2. @Import
  3. @Bean
  1. 为了支持国际化,初始化messageSource
  2. 支持事件,初始化ApplicationEventMulticaster
  3. 支持用户自定义的applicationListener添加到applicationContext中,等spring启动完就发布事件
  4. 创建非懒加载的单利bean并存到beanfactory
  5. 调用lifecycle Bean的start()
  6. 发布contextRefreshedEvent事件
  1. beanFactoryPostProcessor
  1. 作为beanFactory的后置处理器,用来对bean进行加工
  1. beanDefinitionRegistrypostprocessor
  1. 实现这个接口可以注册beanDefinition
  1. refresh()
  1. 加载或刷新持久化的配置,实例化所有的单例
  2. 他的底层原理如下:构造beanfacotry
  3. 构造annotationBeandefinitonReader,注册beanDefinion ,对beanfactory添加postProcessor
  4. 构造classpathBeanDefinitionScanner(扫描并注册beandefiniton)
  5. 调用refresh()
  6. prepareRefresh();
  1. 记录启动时间
  2. 设置一些东西到environment中
  3. 验证environment中是否包括必要属性
  1. obtainFreshBeanfacotry()
  2. prepareBeanfactory
  3. postProcessorBeanfactory
  4. invokeBeanfactoryPostProcessors
  5. 至此,beanfacotryPostProcessor的逻辑执行完了,得到beanDefinition并注册到beanFactory中
  6. registerBeanPostProcessors;用户注册一个
  7. initMessageSource:国际化
  8. initApplicationEventMulticaster:事件发布
  9. onRefresh:给abstractApplicationContext的子类进行扩展
  10. registerListeners
  11. finshBeanFactoryinitialization 实例化非懒加载的bean
  12. finshrefresh
  13. 设置applicationContext的lifecycleProcessor
  14. 调用lifecycleprocessor的onfresh(),调用start开始生命周期

不恋尘世浮华,不写红尘纷扰



举报

相关推荐

0 条评论