2025年springboot启动流程简述_请简要说明单位根的流程

springboot启动流程简述_请简要说明单位根的流程SpringBoot 启动流程大概 初始化 SpringApplic 根据项目的配置情况和 Conditional 条件来推断是否是一个 Web 应用 读取所有 jar 包下面 spring factories 文件 解析放入缓存 然后读取 ApplicationL 为 key 的监听器 后续在 SpringBoot 加载的过程中会基于事件发布来做很多扩展通知 真正的 run 方法开始执行

SpringBoot启动流程大概:

初始化SpringApplication

根据项目的配置情况和Conditional条件来推断是否是一个Web应用。

读取所有jar包下面spring.factories文件,解析放入缓存,然后读取ApplicationListener为key的监听器,后续在SpringBoot加载的过程中会基于事件发布来做很多扩展通知。

真正的run方法开始执行,记录开始执行时间stopwatch。

读取所有的监听器,放入SpringApplicationRunListeners中,以便支持后续的事件发布订阅。

发布ApplicationStartingEvent事件,属于是一个Startup开始事件,感兴趣的监听器就会执行具体对应的startup方法。

基于监听器,加载yml或者properties文件,再根据配置文件中指定的spring.profiles.active环境来激活指定的环境配置,来设置Environment对象。

发布ApplicationEnvironmentPreparedEvent事件,感兴趣的监听器就会触发具体的方法。

打印SpringBoot的Logo、Banner(不重要)。

实例化Spring的上下文对象:AnnotationConfigServletWebServerApplicationContext。

applicationContext#setEnvironment(),将环境变量配置对象Environment设置到上下文中,然后执行ApplicationContextInitializer初始化上下文对象。

发布ApplicationContextInitialzedEvent事件,感兴趣的监听器执行对应的容器初始化方法。

解析启动类为BeanDefinition对象,以便后续IOC流程。

发布ApplicationPreparedEvent事件,感兴趣的监听器执行对应的方法。

#refresh()方法执行,和Spring的refresh不同的是,这个子类是AnnotationConfigServletWebServerApplicationContext。

在#refresh()方法中,除了执行IOC的流程外,后面还会执行#onRefresh()方法,这个方法里面就会创建servlet容器,注册DispatcherServlet。

计算启动总耗时,打印。

发布ApplicationStartedEvent事件,感兴趣的监听器执行对应的started方法。

发布ApplicationReadyEvent事件,感兴趣的监听器执行对应的就绪方法。

回调2个内置的扩展自动触发方法:

回调实现了ApplicationRunner接口的类,且自动执行覆写的run方法。

回调实现了CommandLineRunner接口的类,且自动执行覆写的run方法。

如果启动过程中发生了异常,则发布ApplicationFailedEvent,监听器执行具体的异常处理方法。

编程小号
上一篇 2025-02-16 14:11
下一篇 2025-04-16 23:21

相关推荐

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
如需转载请保留出处:https://bianchenghao.cn/hz/113542.html