SpringBoot启动原理

  1. SpringApplication.run() 启动,先准备环境配置,

    读取 application.yml、properties、命令行参数、环境变量、JVM 参数等。

  2. Spring Boot 根据 classpath 判断应用类型。

    如果有 Spring MVC、Servlet、Tomcat 相关类,就认为是普通 Web 项目,

    创建支持 Web 的 Spring 容器。

  3. 执行容器的 refresh() 方法。

    在这个过程中,@ComponentScan 会扫描我们自己写的 Controller、Service、Component 等类,

    注册成 BeanDefinition。

    同时 @EnableAutoConfiguration 会加载自动配置类,

    根据 classpath 依赖、配置文件和条件注解决定哪些自动配置生效,

    并把相关组件也注册成 BeanDefinition。

  4. BeanDefinition 都准备好以后,

    Spring 开始实例化非懒加载的单例 Bean,

    并完成依赖注入、初始化等流程。

    这时候 Controller、Service、RedisTemplate、DispatcherServlet 等对象才真正被创建出来。

  5. 对于 Web 项目,Spring Boot 会启动内嵌 Tomcat,

    Tomcat 开始监听端口,请求进来后交给 DispatcherServlet,

    最后分发到对应的 Controller 方法。

Spring Boot 启动时,先读取配置,再根据 classpath 判断应用类型并创建对应容器。进入 refresh 后,Spring 会把我们自己写的组件和自动配置提供的组件都注册成 BeanDefinition。BeanDefinition 准备好后,再统一实例化非懒加载单例 Bean,并完成依赖注入。对于 Web 项目,最后会启动内嵌 Tomcat,让项目可以接收请求。

相关推荐
神奇小汤圆3 分钟前
Spring Boot请求处理组件对比详解
后端
AI人工智能+电脑小能手4 分钟前
【大白话说Java面试题 第190题】【08_Kafka篇】第6题:消息队列有什么作用?
java·kafka·消息队列·系统设计·分布式架构
蚰蜒螟13 分钟前
一次 Spring AOP 与定时任务引发的死锁排查实录
java·spring·firefox
TeamDev14 分钟前
JxBrowser 9.3.1 版本发布啦!
java·前端·javascript·c#·混合应用·jxbrowser·浏览器控件
颜酱19 分钟前
03 | 实现节点1 — 抽取关键词
前端·人工智能·后端
qq_4523962327 分钟前
第五篇:《接口与错误处理:Go 的哲学》
开发语言·后端·golang
程序猿乐锅1 小时前
【数据结构与算法 | 第六篇】力扣1109,1094差分数组
java·算法·leetcode
神奇小汤圆1 小时前
SpringBoot + 虚拟线程,简直鸟枪换大炮~
后端
yeflx1 小时前
速腾Airy雷达使用记录
java·服务器·网络
掘金一周1 小时前
想问问掘友们:AI 时代,资深开发的核心价值到底在哪里?| 沸点周刊 7.23
前端·人工智能·后端