SpringBoot-IOC容器初始化流程--面试

IOC容器初始化流程

  • AbstractApplicationContext.refresh()
  1. 准备BeanFactory(DefaultListableBeanFactory)
    1. 设置ClassLoader
    2. 设置Environment
  2. 扫描要放入容器的Bean,得到对应的BeanDefinition(只扫描,并不创建)
  3. 注册BeanPostProcessor
  4. 处理国际化
  5. 初始化事件多播器ApplicationEventMuiticaster
  6. 启动Tomcat
  7. 绑定事件监听器和事件多播器
  8. 实例化非懒加载的单例Bean
  9. 扫尾工作,比如清空实例化时占用的缓存等

IOC容器的初始化,核心工作是在AbstractApplicationContext.refresh方法中完成的

在refresh方法中主要做了几件事

  1. 准备BeanFactory,在这一块需要给BeanFactory设置很多属性,比如类加载器、Environment等
  2. 执行BeanFactory后置处理器,这一阶段扫描要放入容器的Bean信息,得到对应的BeanDefinition(只扫描,并不创建)
  3. 注册BeanPostProcessor,我们自定义的BeanPostProcessor就是在这个阶段被加载的,将来Bean对象实例化好后需要用到
  4. 启动tomcat,
  5. 实例化容器中实例化非懒加载的单例Bean,这里要说明的是,多例Bean和懒加载的Bean不会在这个阶段实例化。
  6. 容器创建完毕后,再做一些扫尾工作,比如清空实例化时占用的缓存等
  • 7
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值