Home
  • 计算机网络
  • 操作系统
  • 数据结构与算法
  • 设计模式
  • JavaSE
  • JVM
  • JUC
  • Netty
  • CPP
  • QT
  • UE
  • Go
  • Gin
  • Gorm
  • HTML
  • CSS
  • JavaScript
  • vue2
  • TypeScript
  • vue3
  • react
  • Spring
  • SpringMVC
  • Mybatis
  • SpringBoot
  • SpringSecurity
  • SpringCloud
  • Mysql
  • Redis
  • 消息中间件
  • RPC
  • 分布式锁
  • 分布式事务
  • 个人博客
  • 弹幕视频平台
  • API网关
  • 售票系统
  • 消息推送平台
  • SaaS短链接系统
  • Linux
  • Docker
  • Git
GitHub (opens new window)
Home
  • 计算机网络
  • 操作系统
  • 数据结构与算法
  • 设计模式
  • JavaSE
  • JVM
  • JUC
  • Netty
  • CPP
  • QT
  • UE
  • Go
  • Gin
  • Gorm
  • HTML
  • CSS
  • JavaScript
  • vue2
  • TypeScript
  • vue3
  • react
  • Spring
  • SpringMVC
  • Mybatis
  • SpringBoot
  • SpringSecurity
  • SpringCloud
  • Mysql
  • Redis
  • 消息中间件
  • RPC
  • 分布式锁
  • 分布式事务
  • 个人博客
  • 弹幕视频平台
  • API网关
  • 售票系统
  • 消息推送平台
  • SaaS短链接系统
  • Linux
  • Docker
  • Git
GitHub (opens new window)
  • starter开发
  • 自动装配原理
  • SpringBoot启动流程
    • 启动流程
  • SpringBoot
Nreal
2024-04-02
目录

SpringBoot启动流程

# 启动流程

  1. 加载启动类;

    启动入口是一个main方法,调用SpringApplication.run()方法启动Spring Boot应用,参数一般传入主配置类(Main Application Class);

  2. 创建Spring应用上下文;

    ApplicationContext:自动扫描应用中组件,根据配置自动装配这些组件;

  3. 自动装配;

    根据@SpringBootApplication,根据应用的环境和依赖,自动配置好数据库连接、HTTP 容器、消息队列等各种组件;

  4. 执行Starters;

    启动器通常包含了一系列常用的依赖,比如 Web Starter、Data JPA Starter 等,它们能够一次性地引入多个相关的依赖,从而简化了配置;

  5. 执行 CommandLineRunner 和 ApplicationRunner;

    Spring Boot 允许开发者定义实现了 CommandLineRunner 或 ApplicationRunner 接口的类,并将它们注册到应用上下文中。这些类会在 Spring Boot 应用启动完成后被执行,开发者可以在这些类中编写一些启动时需要执行的逻辑;

  6. 启动Web服务器;

    如果应用中包含了 Web 组件(比如 Spring MVC、Spring WebFlux 等),Spring Boot 将会启动内嵌的 Web 服务器(如 Tomcat、Jetty、Undertow 等),并将请求分发给相应的控制器进行处理;

  7. 加载外部配置文件;

    如 application.properties 或 application.yml,将配置信息注入到相应的 Bean 中;

  8. 监听应用事件;

    Spring Boot 提供了一个事件模型,开发者可以通过监听应用事件来执行一些特定的逻辑。比如可以监听应用启动事件、关闭事件等;

自动装配原理

← 自动装配原理

Theme by Vdoing | Copyright © 2021-2024
  • 跟随系统
  • 浅色模式
  • 深色模式
  • 阅读模式