spring boot 启动流程

springboot 启动流程

一、构建启动类对象SpringApplication

  1. 获取主资源、主类
  2. 获取应用类型
  3. 从META-INF/spring.factories获取中获取启动器列表List<ApplicationContextInitializer<?>>
  4. 从META-INF/spring.factories获取中获取监听器列表List<ApplicationListener<?>>

二、调用run方法

  1. 从META-INF/spring.factories获取中获取启动监听类SpringApplicationRunListeners并启动starting
  2. 获取参数类ApplicationArguments
  3. 准备环境类ConfigurableEnvironment
    • 根据应用类型创建环境对象
    • 配置环境参数
    • 启动”环境准备“监听动作
  4. 打印banner
  5. 创建应用上下文ConfigurableApplicationContext
  6. 准备上下文
    • 设置环境
    • 运行各个应用启动器ApplicationContextInitializer的initialize方法
    • 调用”上下文准备“监听动作
    • 注册用户启动类
    • 启动“上下文已加载”监听动作
  7. 刷新上下文
    • 注册程序停止线程钩子
    • 调用父级上下文AbstractApplicationContext完成刷新上下文
    • 准备容器DefaultListableBeanFactory
    • 注册web相关对象request、response、session等的工厂对象
    • 注册时间运行处理器applicationEventMulticaster
    • 创建web容器WebServer
    • 将各个监听器注册到applicationEventMulticaster
    • 完成容器beanFactory初始化
      • 注册必要的和用户定义的bean
    • 完成刷新
    • 调用”启动完成“监听动作
    • 回调ApplicationRunner、CommandLineRunner的实现类的run方法
    • 调用“应用已运行中”监听动作
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值