当前位置: 首页 > article >正文

Springboot 启动流程

Springboot 启动流程

  • 构建SpringApplicaiton对象
  • 执行SpringApplicaiton.run()

构建SpringApplicaiton对象

  1. 通过loadClass的方式,推测webApplicationType。比如,如果可以加载到javax.servlet.Servlet类,那么就是Servlet应用类型。

  2. 从spring.factories中加载initializers和listeners
    ApplicationRunListener: 在启动过程中的各个节点发布不同的事件,可以实现该接口,在不同节点打印信息

  3. 推测出main方法所在的类

执行SpringApplicaiton.run()

  1. 获取SpringApplicationRunListeners
  2. RunListener步骤标记:spring.boot.application.starting
  3. 根据webApplicationType生成Environemnt对象
  4. 读取args(命令行参数SimpleCommandLinePropertySource)、JVM参数(systemProperties)、操作系统参数(systemEnvironment)放入environment中,读取配置文件application.xml或用户指定路径的配置文件?
  5. 步骤标记:spring.boot.application.environment-prepared
  6. 打印banner
  7. 创建applicationContext,把environment设置到applicationContext中
  8. 调用initializers的initialize方法
  9. 步骤标记:spring.boot.application.context-prepared
  10. 设置一些singleton和参数如是否允许循环依赖,是否允许beanDefinition覆盖等
  11. 步骤标记:spring.boot.application.context-loaded
  12. Spring的容器refresh
  13. 步骤标记:spring.boot.application.started
  14. 调用Runner(ApplicationRunner、CommandLineRunner)的run方法(扩展点)
  15. 步骤标记:spring.boot.application.ready

http://www.kler.cn/a/576750.html

相关文章:

  • uniapp+node+mysql接入deepseek实现流式输出
  • P8748 [蓝桥杯 2021 省 B] 时间显示
  • VS大型CPP项目调试,Debug模式,Release模式,附加到进程模式
  • app测试|面试常问工作常用的adb命令集
  • IBUF和BUFG
  • DeepSeek如何变现?完整版学习资料合集【可下载】
  • 【开题报告+论文+源码】基于SSM的宿舍管理系统的设计与实现
  • 2025网络安全工程师:软考新挑战与职业发展探析
  • python用户图形界面pygtk库安装与使用
  • 代码随想录 回溯
  • 高速率高耐压国产CAN FD芯片技术特性与应用前景
  • TON基金会确认冠名赞助2025香港Web3嘉年华,并将于4月8日重磅呈现“TON生态日”
  • 广度优先遍历(BFS):逐层探索的智慧
  • 大模型开发(五):P-Tuning项目——新零售决策评价系统(二)
  • k8s scheduler源码阅读
  • .net 与 Pythonnet库的使用心得
  • MySQL作业一
  • React + React-intl @3.xx + TypeScript
  • 网络安全等级保护2.0 vs GDPR vs NIST 2.0:全方位对比解析
  • 手写简易Tomcat核心实现:深入理解Servlet容器原理