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

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

大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。

Jetbrains全系列IDE使用 1年只要46元 售后保障 童叟无欺

SpringBoot启动流程大概:

  1. 初始化SpringApplication
    1. 根据项目的配置情况和Conditional条件来推断是否是一个Web应用。
    2. 读取所有jar包下面spring.factories文件,解析放入缓存,然后读取ApplicationListener为key的监听器,后续在SpringBoot加载的过程中会基于事件发布来做很多扩展通知。
  2. 真正的run方法开始执行,记录开始执行时间stopwatch。
  3. 读取所有的监听器,放入SpringApplicationRunListeners中,以便支持后续的事件发布订阅。
  4. 发布ApplicationStartingEvent事件,属于是一个Startup开始事件,感兴趣的监听器就会执行具体对应的startup方法。
  5. 基于监听器,加载yml或者properties文件,再根据配置文件中指定的spring.profiles.active环境来激活指定的环境配置,来设置Environment对象
  6. 发布ApplicationEnvironmentPreparedEvent事件,感兴趣的监听器就会触发具体的方法。
  7. 打印SpringBoot的Logo、Banner(不重要)。
  8. 实例化Spring的上下文对象:AnnotationConfigServletWebServerApplicationContext
  9. applicationContext#setEnvironment(),将环境变量配置对象Environment设置到上下文中,然后执行ApplicationContextInitializer初始化上下文对象。
  10. 发布ApplicationContextInitialzedEvent事件,感兴趣的监听器执行对应的容器初始化方法。
  11. 解析启动类为BeanDefinition对象,以便后续IOC流程。
  12. 发布ApplicationPreparedEvent事件,感兴趣的监听器执行对应的方法。
  13. #refresh()方法执行,和Spring的refresh不同的是,这个子类是AnnotationConfigServletWebServerApplicationContext
  14. #refresh()方法中,除了执行IOC的流程外,后面还会执行#onRefresh()方法,这个方法里面就会创建servlet容器,注册DispatcherServlet
  15. 计算启动总耗时,打印。
  16. 发布ApplicationStartedEvent事件,感兴趣的监听器执行对应的started方法。
  17. 发布ApplicationReadyEvent事件,感兴趣的监听器执行对应的就绪方法。
  18. 回调2个内置的扩展自动触发方法:
    1. 回调实现了ApplicationRunner接口的类,且自动执行覆写的run方法。
    2. 回调实现了CommandLineRunner接口的类,且自动执行覆写的run方法。
  19. 如果启动过程中发生了异常,则发布ApplicationFailedEvent,监听器执行具体的异常处理方法。
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/171553.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • 学员管理系统(完整版)

    前言:学员管理系统是刚接触python时算是一个比较难的小项目,毕竟第一次接触这样的思维逻辑,不过用心学起来还是很有趣的,发现乐在其中,也就不觉得难了。下面给大家分享一下学员管理系统较为完整的代码(当然其中肯定有很多不足,毕竟是新手,菜鸟小程序猿,还请见谅!多谢!)言归正传:学员管理拆分为一下步骤:首先:先定义存储所有学员信息的大列表students=[]添加学员,代码如下:查…

    2022年4月5日
    83
  • gateway网关使用_gateway网关路由配置

    gateway网关使用_gateway网关路由配置网关搭建步骤1、创建项目,引入nacos以及gateway的依赖2、配置application.yml,配置nacos注册中心地址,以及网关路由配置,如下:spring:application:name:gatewaycloud:nacos:discovery:server-addr:localhost:8848#nacos地址gateway:routes:-id:user-servic

    2022年10月11日
    2
  • 1073. 树的中心(树形dp)[通俗易懂]

    1073. 树的中心(树形dp)[通俗易懂]给定一棵树,树中包含 n 个结点(编号1~n)和 n−1 条无向边,每条边都有一个权值。请你在树中找到一个点,使得该点到树中其他结点的最远距离最近。输入格式第一行包含整数 n。接下来 n−1 行,每行包含三个整数 ai,bi,ci,表示点 ai 和 bi 之间存在一条权值为 ci 的边。输出格式输出一个整数,表示所求点到树中其他结点的最远距离。数据范围1≤n≤10000,1≤ai,bi≤n,1≤ci≤105 输入样例: 5 2 1 1 3 2 1 4 3 1 5 1

    2022年8月8日
    4
  • 【解决方案】Pyinstaller打包exe文件详细教程

    【解决方案】Pyinstaller打包exe文件详细教程在业务场景中,经常需要Python开发一些小程序/脚本/GUI界面,交付给一些小白或未安装Python的小伙伴们使用。噔噔蹬蹬pyinstaller闪亮登场场景说明使用Pyinstaller将Python脚本或者项目打包,生成可执行的.exe文件。Pyinstaller是一个很不错的免费打包工具,支持Windows,Linux和MacOS,完美支持32位和64位系统。pyinstaller安装pipinstallpyinstaller打包参数#常用打包参数#-F.

    2022年6月16日
    31
  • 《JavaScript 模式》读书笔记(5)— 对象创建模式3

    这一篇,我们主要来学习了解下沙箱模式以及静态成员的相关内容。五、沙箱模式沙箱模式(sandboxpattern)解决了命名空间模式的如下几个缺点:对单个全局变量的依赖变成了对应用程序的全局变量

    2022年3月25日
    38
  • 初探js逆向「建议收藏」

    初探js逆向「建议收藏」转载自三尾先生博客初探js逆向在开始之前想先说下阅读完三尾先生这篇文章的一点个人理解,文章写得挺好的,很值得新手学习了解,首先谈下逆向激活成功教程思路1.需要逆向的时候一般是遇到了加密问题,加密情况有参数加密,有结果加密。但不管怎样的加密只要页面能正常显示,那就有解密过程!2.先找到加密的字段名,通过字段名在sources全局搜索3.在含有这些字段的位置打断点,一般sources里看到的会是一行的压缩代码,我们可以通过点击左下角的双大括号格式化js代码然后通过断点一步步查看参数在哪一步骤发生了变

    2022年6月22日
    44

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号