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,让项目可以接收请求。

相关推荐
2601_962071575 小时前
【Java报错已解决】org.springframework.beans.factory.BeanCreationException
java·开发语言
zww89491115 小时前
酒馆预约系统开发实战:从需求分析到上线全流程指南
java·eclipse
东风破_6 小时前
从跨域到 WebSocket:前端跨域方案、SSE 与双向实时通信详解
前端·后端
zww89491118 小时前
匿名树洞系统开发实战:从需求分析到部署指南
java·eclipse
行百里er8 小时前
Gateway 上别硬塞 MVC:DeferredImportSelector 看菜下锅
spring boot·后端·开源
名字还没想好☜8 小时前
Java 遍历时删元素抛 ConcurrentModificationException:fail-fast 原理与三种正确删法
后端
IT_陈寒9 小时前
React Hooks闭包陷阱差点让我加班到凌晨
前端·人工智能·后端
黑马程序员毕设9 小时前
基于Java的医院药品管理系统的优化设计与实现
java·开发语言·spring boot·小程序·架构·课程设计·毕设
木井巳9 小时前
【BFS/DFS 解决 FloodFill 算法】太平洋大西洋水流问题
java·算法·leetcode·深度优先·广度优先·宽度优先·推荐算法
码事漫谈9 小时前
本体论,彻底懂
后端