springboot启动流程

简介: springboot的启动流程;

springboot的启动流程;


总体来说,分为两个核心步骤


1,创建SpringApplication对象


2,SpringApplication的run方法实现启动同时返回当前容器的上下文对象


分析一下详细的流程;


1,创建SpringApplication对象,指定springboot容器初始化操作



构造函数内容:



2,获取当前应用启动类型


   原理:判断当前classpath是否有加载我们的servlet类,返回servlet web的启动方式


   webApplicationType分为三种类型:


       1,REACTIVE 响应式启动(spring5新特性)


       2,NONE 不会嵌入web容器启动 (在将springboot项目放入外部服务器运行的时候使用,可以在application.yml中配置)


       3,SERVLET 基于web容器启动 (嵌入式web容器,由java语言创建)


3,setlnitializers读取Spr ingBoot包下面的META- |NF/spring. factories获取到对应Appl icat ionContext Initializer装配到集合中,一共是6个





4,setListeners 读取SpringBoot包下面的META- INF/spring.factories获取到对应ApplicationListener装配到集合中




5,mainApplicationClass获取当前运行的主函数


6,调用SpringApplication的run方法实现启动



run方法内容:



7,StopWatch stopWatch = new StopWatch();


stopWatch.start();

  .....


stopWatch.stop();

记录springboot项目启动时间


8,getRunListeners(args)读取所有包里面的META-INF/spring.factories文件中的SpringApplicationRunListener类型存入到集合中


9,listeners.starting();循环执行集合中所有项的starting方法



10,ConfigurableEnvironment environment = prepareEnvironment(listeners, applicationArguments);


读取配置文件到springboot容器中


11,Banner printedBanner = printBanner(environment);


打印Banner图


12,context = createApplicationContext();


点击进入这个方法可以看到是判断webApplicationType类型



servlet类型,创建AnnotationConfigServletWebServerApplicationContext对象



13,refreshContext(context);  刷新上下文


14,开始创建tomcat容器


15,开始加载SpringMVC


16,afterRefresh(context, applicationArguments);


一个空的模板方法,可以供子类重写


17,listeners.started(context);


使用广播和回调机制通知监听器springboot容器已经启动成功


18,listeners.running(context);


使用广播和回调机制通知监听器springboot容器已经启动成功,可以正常运行项目


19,最后返回当前上下文对象


相关文章
|
6月前
|
前端开发 Java 应用服务中间件
SpringBoot-Run启动流程
探索Spring Boot启动流程,从加载配置、创建应用上下文、自动配置到启动内嵌服务器。启动类是入口点,`@SpringBootApplication`标记启动,`SpringApplication.run`启动应用。自动配置基于条件注解配置Bean,应用上下文由`SpringApplication`创建并刷新。内嵌服务器如Tomcat随应用启动,简化部署。理解此流程有助于深入掌握Spring Boot。
215 2
|
6月前
|
缓存 Java 程序员
springboot的启动流程总结
springboot的启动流程总结
|
6月前
|
设计模式 Java 容器
SpringBoot2 | SpringBoot启动流程源码分析(二)
SpringBoot2 | SpringBoot启动流程源码分析(二)
80 0
|
6月前
|
设计模式 Java 机器人
SpringBoot3自动配置流程 SPI机制 核心注解 自定义starter
SpringBoot3自动配置流程 SPI机制 核心注解 自定义starter
|
1月前
|
前端开发 Java 数据安全/隐私保护
用户登录前后端开发(一个简单完整的小项目)——SpringBoot与session验证(带前后端源码)全方位全流程超详细教程
文章通过一个简单的SpringBoot项目,详细介绍了前后端如何实现用户登录功能,包括前端登录页面的创建、后端登录逻辑的处理、使用session验证用户身份以及获取已登录用户信息的方法。
193 2
用户登录前后端开发(一个简单完整的小项目)——SpringBoot与session验证(带前后端源码)全方位全流程超详细教程
|
5月前
|
JavaScript Java 测试技术
基于springboot+vue.js+uniapp小程序的销售项目流程化管理系统附带文章源码部署视频讲解等
基于springboot+vue.js+uniapp小程序的销售项目流程化管理系统附带文章源码部署视频讲解等
65 3
|
1月前
|
NoSQL Java Redis
shiro学习四:使用springboot整合shiro,正常的企业级后端开发shiro认证鉴权流程。使用redis做token的过滤。md5做密码的加密。
这篇文章介绍了如何使用Spring Boot整合Apache Shiro框架进行后端开发,包括认证和授权流程,并使用Redis存储Token以及MD5加密用户密码。
30 0
shiro学习四:使用springboot整合shiro,正常的企业级后端开发shiro认证鉴权流程。使用redis做token的过滤。md5做密码的加密。
|
1月前
|
XML Java 应用服务中间件
【Spring】运行Spring Boot项目,请求响应流程分析以及404和500报错
【Spring】运行Spring Boot项目,请求响应流程分析以及404和500报错
180 2
|
1月前
|
JSON 前端开发 JavaScript
优雅!Spring Boot 3.3 实现职责链模式,轻松应对电商订单流程
本文介绍如何使用 Spring Boot 3.3 实现职责链模式,优化电商订单处理流程。通过将订单处理的各个环节(如库存校验、优惠券核验、支付处理等)封装为独立的处理器,并通过职责链将这些处理器串联起来,实现了代码的解耦和灵活扩展。具体实现包括订单请求类 `OrderRequest`、抽象处理器类 `OrderHandler`、具体处理器实现(如 `OrderValidationHandler`、`VerifyCouponHandler` 等)、以及初始化职责链的配置类 `OrderChainConfig`。
|
3月前
|
XML Java 应用服务中间件
SpringBoot启动流程解析
SpringBoot启动流程解析
47 0
下一篇
无影云桌面