(面试)Springboot的启动流程
(面试)Springboot的启动流程
在我们springboot项目启动的时候,会构建一个SpringbootApplication的实例,然后调用这个实例的run()方法,在调用run()方法之前,也就是构建SpringbootApplicatiion的时候,会进行一些初始化的操作:
- 将传入的启动类放入到LinkedHashSet中
- 判断是否为web环境,若存在ConfigurableWebApplicationContext则是web环境
- 创建并初始化ApplicationInitializer
- 创建并初始化ApplicationListener
- 初始化主类mainApplication
然后执行run()方法:
- 创建一个StopWatch计时器
- 配置awt系统属性
- 获取SpringbootApplicationListeners
- 启动SpringbootApplicationListeners
- 创建ApplicationArguments
- 创建并初始化ConfigurableEnvironment
- 配置忽略的bean信息
- 打印Banner(项目启动的时候的图标)
- 创建ConfigurableApplicationContext
- 准备ConfigurableApplicationContext
- 刷新ConfigurableApplicationContext
- 容器刷新后的动作
- SpringbootApplicationRunListner发布finish事件
- 计时器停止计时
- 启动所有的监视器
- 将应用上下文ConfigurableApplicationContext传递给每一个监视器
(面试)Springboot的启动流程相关推荐
- springboot完整启动流程
springboot的完整启动流程 文章目录 springboot的完整启动流程 eg: 计时 接着创建引导上下文(Context环境) 进入createBootstrapContext()中查看源代 ...
- springboot 的启动流程
一.通过SpringFactoriesLoader获取系统中所有的SpringApplicationRunListener(备注:目前系统中只有这一个EventPublishingRunListene ...
- SPRINGBOOT启动流程及其原理
Spring Boot.Spring MVC 和 Spring 有什么区别? 分别描述各自的特征: Spring 框架就像一个家族,有众多衍生产品例如 boot.security.jpa等等:但他们的 ...
- springboot启动流程
一句话总结:在context的refresh方法中,需要注册bean definition,实例化bean.在加载bean defintion的时候使用ConfigurationClassParser ...
- Springboot启动流程简述
Springboot提高了开发效率,简化了配置,往往使用一些注解就可以使项目跑起来,下面理一下Springboot的启动流程.Springboot版本:2.2.4.RELEASE 以下是一个常见的Sp ...
- Springboot启动流程分析-1——脚手架工程和启动流程
一.创建springboot脚手架工程 springboot官方提供一个web网页用于构建脚手架工程 https://start.spring.io Project选项: Java生态体系中有三大构建 ...
- 简单清晰的SpringBoot启动流程
文章目录 前言 一.创建SpringApplication对象 二.执行 run() 方法 总结 前言 SpringBoot启动流程总体分为两步,第一步先SpringApplication对象,第二步 ...
- SpringBoot 启动流程(细节拉满)
SpringBoot 启动流程(细节拉满) 网上搜了一下,这方面网上的资料不少,有些从@SpringBootApplication来入手讲.个人不能苟同吧,讲一讲我的理解.还有一些讲的比较笼统,我来写 ...
- 【SpringBoot】面试必杀技-泰山陨石坠,SpringBoot中主启动类的run方法启动流程是什么?
开头导语由Chatgpt完成 当今互联网行业中,Java后端开发岗位的竞争异常激烈,对于面试者来说,掌握一些技巧和知识点将有助于脱颖而出.而对于SpringBoot框架的使用和运行机制,更是Java后 ...
最新文章
- postgresql主从备份_基于PG12.2实现主从异步流复制及主从切换教程(下)
- 如何运行你的Android程序?
- OpenGL浮雕效果
- python数值运算答案_笨方法学Python 习题3:数字和数学计算
- 330 div+css Experience
- watir6.0 -selenium3新时代的watir-webdriver
- java中的重量级与轻量级概念
- 没网可以用python吗_在没有网络的情况下能自学python吗?
- php处理html数据类型,PHP html_entity_decode() 函数 | 菜鸟教程
- PSD分层模板素材|电商页面这样设计,转化率成倍提高!
- SQL SERVER 高效存储过程分页(Max/Min方法)
- HDU2551 竹青遍野【数学计算+水题】
- android卸载弹出窗口,卸载Android app弹出浏览器的一种实现
- centos7安装python2.6_centos7.2下yum和python重装问题及解决方法
- Java实现一个简易联网坦克对战小游戏
- FPGA控制AD7606进行数据采集
- “七夕情歌会 缘聚红豆峡” 红豆峡第15届情歌会圆满结束
- 【Unity基础知识之一】 Unity支持 IOS 64-BIT
- [WTL/ATL]_[Gdiplus]_[绘制虚线并设置破折号空格的宽度]
- BCD编码和ASCII码
热门文章
- 《刷新》精髓:微软第三任CEO萨提亚•纳德拉重新发现微软灵魂的传奇历程,给了我们普通人哪些启示?
- 【深入理解JVM】:HotSpot垃圾收集器
- Android 项目开发填坑记 - 谷歌商店上架被拒 Apps On Device
- 从新型冠状病毒想到清单革命
- JVM底层原理之标配参数、X和XX参数
- 也许风停了,我们才能心平气和的看待一家公司
- 图像像素类型转换与归一化
- 钉钉ppt放映显示备注_PPT的备注怎么用,放映PPT时如何显示备注 来看看吧
- 计算机的程序代码是储存在什么中的,计算机的一切程序和数据都是以什么情势贮存?...
- (NDIS5.0)协议驱动Ndisprot源码解读