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,监听器执行具体的异常处理方法。
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

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

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)


相关推荐

  • 将oracle端口1521共享_[转载]Oracle 1521端口不通 telnet不通

    将oracle端口1521共享_[转载]Oracle 1521端口不通 telnet不通今天启动工程,突然提示无法连接远程Oracle。我试着telnetOracle服务器1521端口,提示连接失败。D:DocumentsandSettingsAdministrator>telnet10.201.70.681521正在连接到10.201.70.68…不能打开到主机的连接,在端口1521:连接失败Oracle服务器与本机都在局域网内,不存在网络不通问题,怎么会…

  • 特立独行的理解_喜欢特立独行的人

    特立独行的理解_喜欢特立独行的人原题链接对一个十进制数的各位数字做一次平方和,称作一次迭代。如果一个十进制数能通过若干次迭代得到 1,就称该数为幸福数。1 是一个幸福数。此外,例如 19 经过 1 次迭代得到 82,2 次迭代后得到 68,3 次迭代后得到 100,最后得到 1。则 19 就是幸福数。显然,在一个幸福数迭代到 1 的过程中经过的数字都是幸福数,它们的幸福是依附于初始数字的。例如 82、68、100 的幸福是依附于 19 的。而一个特立独行的幸福数,是在一个有限的区间内不依附于任何其它数字的;其独立性就是依附于它的的幸福数

  • Oracle创建用户、表(1)「建议收藏」

    Oracle创建用户、表(1)「建议收藏」Oracle创建用户、表(1)1.连接C:\Users\LEI>sqlplus/assysdbaSQL*Plus:Release12.1.0.2.0Productionon星期五4月2210:17:522016Copyright(c)1982,2014,Oracle.Allrightsreserved.连接到:OracleDatabase12cEn

  • Java网络编程基础(Netty预备知识)[通俗易懂]

    今天在家休息,闲来无事,写篇博客,陶冶下情操~~~我是分割线最近在重新学习Java网络编程基础,以便后续进行Netty的学习。整理了一下重要的基础知识点,供大家参考。正在读这篇随笔的你是否遇到

  • 关于php网络爬虫phpspider

    关于php网络爬虫phpspider

  • 推荐5款开源报表工具下载_开源报表系统

    推荐5款开源报表工具下载_开源报表系统小编最近发现几款不错的开源报表,还提供源码,现在给大家分享一下,希望能给你带来帮助!1、项目名称:积木报表项目简介:积木报表,免费的企业级WEB报表工具。专注于“专业、易用、优质”的报表设计器和大屏设计器。支持打印设计、数据报表、图形报表、大屏设计器,重点是免费的。项目地址:http://www.jimureport.com/2、项目名称:UReport2项目简介:UReport2是一款高性能的Java报表引擎,提供完善的基于网页的报表设计器,可快速做出各种复杂的中式报表。在UR

    2022年10月20日

发表回复

您的电子邮箱地址不会被公开。

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