• 博客园logo
  • 会员
  • 周边
  • 众包
  • 新闻
  • 博问
  • 闪存
  • 赞助商
  • Chat2DB
    • 搜索
      所有博客
    • 搜索
      当前博客
  • 写随笔 我的博客 短消息 简洁模式
    用户头像
    我的博客 我的园子 账号设置 会员中心 简洁模式 ... 退出登录
    注册 登录
思想人生从关注生活开始
博客园    首页    新随笔    联系   管理    订阅  订阅

Spring Boot的启动

Spring Boot的启动过程可以清晰地划分为几个主要阶段,以下是按照关键步骤进行的详细阐述:

一、启动准备阶段

  1. 加载启动类:

    • 当SpringBoot项目启动时,它会在当前工作目录下寻找带有@SpringBootApplication注解标识的类,并把这个类作为应用程序的入口点。
    • 如果找不到这样的主类,则会打印错误信息并退出。
  2. 创建StopWatch实例:

    • 用于记录SpringBoot的启动时间。
  3. 加载监听器:

    • 使用SpringFactoriesLoader加载监听器,如EventPublishingRunListener。

二、配置加载阶段

  1. 加载配置文件:

    • SpringBoot会自动扫描当前项目的resources目录,并加载其中的application.properties或application.yml等配置文件。
    • 这些配置文件中包含了应用程序的各种参数,例如数据库连接信息、日志级别等。
  2. 配置环境:

    • 创建和配置Environment,该对象包含了应用程序的运行环境信息。

三、初始化ApplicationContext

  1. 创建ApplicationContext:

    • 根据项目类型(Web、Reactive、非Web)创建相应的ApplicationContext实例。
  2. 加载Bean:

    • 扫描当前项目中的所有Bean,并将它们注册到ApplicationContext中。
    • 加载自动配置,根据starter依赖中的Configuration和Bean的装配情况,自动装配相应的Bean。

四、启动内嵌的Web服务器

  • 如果项目是一个Web应用,SpringBoot会根据配置文件中的信息自动创建Tomcat或Jetty等Web容器,并将Spring容器注册到Web容器中,使得SpringBoot应用程序可以直接以Web应用程序的形式运行。

五、启动应用程序

  • 根据之前创建好的Spring容器以及Web服务器,启动相应的线程进行服务处理。

六、监听应用程序的状态

  • SpringBoot会监听应用程序的状态,并根据需要进行相应的操作。
    • 例如,当应用程序退出时,它会打印出详细的日志信息,并将应用程序的上下文环境恢复到初始状态。

七、发布事件

  • 在启动的不同阶段,SpringBoot会发布各种事件,如started()、ready()等,允许开发者在特定的时间点执行自定义的逻辑。

八、停止计时并打印日志

  • StopWatch停止计时,并打印出整个启动过程所花费的时间。

整个启动过程体现了Spring Boot的自动化和简洁性,开发者只需关注业务逻辑的实现,而无需过多关注底层的启动细节。

posted @ 2024-05-25 16:46  JackYang  阅读(2135)  评论(0)    收藏  举报
刷新页面返回顶部
博客园  ©  2004-2025
浙公网安备 33010602011771号 浙ICP备2021040463号-3