admin管理员组

文章数量:1032061

Spring Boot的启动

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

一、启动准备阶段

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

二、配置加载阶段

  1. 加载配置文件:
    • SpringBoot会自动扫描当前项目的resources目录,并加载其中的application.propertiesapplication.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的自动化和简洁性,开发者只需关注业务逻辑的实现,而无需过多关注底层的启动细节。

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。 原始发表:2024-05-25,如有侵权请联系 cloudcommunity@tencent 删除spring容器boot配置日志

Spring Boot的启动

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

一、启动准备阶段

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

二、配置加载阶段

  1. 加载配置文件:
    • SpringBoot会自动扫描当前项目的resources目录,并加载其中的application.propertiesapplication.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的自动化和简洁性,开发者只需关注业务逻辑的实现,而无需过多关注底层的启动细节。

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。 原始发表:2024-05-25,如有侵权请联系 cloudcommunity@tencent 删除spring容器boot配置日志

本文标签: Spring Boot的启动