面试题:说说 Spring Boot 的启动流程?

Spring Boot 的启动流程可以概括为以下几个关键步骤:

  1. 加载 SpringApplication
    • 当调用 SpringApplication.run() 方法时,Spring Boot 会创建一个 SpringApplication 实例。
    • 这个实例会初始化一些基本的配置,比如设置应用的主类、推断应用类型(Web 应用还是普通应用)、设置初始化器等。
  2. 准备环境
    • Spring Boot 会加载并配置应用的环境(Environment),包括从配置文件(如 application.properties 或 application.yml)中读取配置。
    • 环境配置还包括从命令行参数、系统属性等来源获取配置。
  3. 创建应用上下文
    • Spring Boot 会根据应用类型创建相应的应用上下文(ApplicationContext)。对于 Web 应用,通常会创建 AnnotationConfigServletWebServerApplicationContext
    • 应用上下文是 Spring IoC 容器的核心,负责管理 Bean 的生命周期。
  4. 刷新应用上下文
    • 在创建完应用上下文后,Spring Boot 会调用 refresh() 方法来刷新上下文。
    • 这个过程包括加载 Bean 定义、初始化 Bean、调用 Bean 的后置处理器、注册 Bean 等。
  5. 执行 Runner
    • 在应用上下文刷新完成后,Spring Boot 会执行所有实现了 CommandLineRunner 或 ApplicationRunner 接口的 Bean。
    • 这些 Runner 通常用于在应用启动后执行一些初始化任务。
  6. 启动内嵌的 Web 服务器
    • 如果是一个 Web 应用,Spring Boot 会启动内嵌的 Web 服务器(如 Tomcat、Jetty 或 Undertow)。
    • Web 服务器启动后,应用就可以处理 HTTP 请求了。
  7. 发布应用启动事件
    • 在应用启动完成后,Spring Boot 会发布 ApplicationStartedEvent 和 ApplicationReadyEvent 等事件。
    • 这些事件可以用于在应用启动后执行一些自定义的逻辑。
  8. 应用运行
    • 至此,Spring Boot 应用已经启动完成,进入运行状态,等待处理请求或执行其他任务。

总结:

Spring Boot 的启动流程是一个复杂但高度自动化的过程,涵盖了从环境准备、上下文创建、Bean 加载到 Web 服务器启动等多个步骤。通过理解这些步骤,可以更好地掌握 Spring Boot 的工作原理,并在实际开发中更好地利用其特性。

THE END
点赞12 分享
评论 抢沙发
头像
欢迎您留下宝贵的见解!
提交
头像

昵称

取消
昵称表情代码图片

    暂无评论内容