SpringBoot的启动原理?

发布于:2025-03-20 ⋅ 阅读:(17) ⋅ 点赞:(0)

大家好,我是锋哥。今天分享关于【SpringBoot的启动原理?】面试题。希望对大家有帮助;

SpringBoot的启动原理?

1000道 互联网大厂Java工程师 精选面试题-Java资源分享网

Spring Boot的启动原理主要是通过 SpringApplication 类来启动一个Spring Boot应用。具体的启动流程可以分为以下几个主要步骤:

1. 初始化SpringApplication对象

  • Spring Boot应用的启动入口通常是 main 方法,通常是应用的启动类。
  • 启动类通过 SpringApplication.run(Application.class, args) 启动应用。SpringApplication 是Spring Boot的核心类,它负责整个应用的启动过程。
public static void main(String[] args) {
    SpringApplication.run(Application.class, args);
}

2. 创建SpringApplication实例

  • SpringApplication.run() 方法会创建一个 SpringApplication 实例,并调用它的 run() 方法来启动Spring应用上下文。
SpringApplication application = new SpringApplication(Application.class);

3. 准备和初始化环境

  • 在调用 run() 方法时,Spring Boot首先会创建一个 ApplicationContext,并加载所有的配置(如:application.properties 或 application.yml)。
  • 它会通过 ConfigurableEnvironment(也就是 Spring 的环境配置对象)来加载属性配置。此时,Spring Boot 会加载默认的环境配置,如嵌入式Tomcat配置、数据源配置等。

4. 设置命令行参数和配置

  • 在Spring Boot应用启动时,SpringApplication 会解析启动时传递的命令行参数,并在运行时将这些参数设置到Spring环境中。
  • 如果应用包含@SpringBootApplication注解,它会帮助我们自动配置很多常见的配置(如数据库、JPA、Web应用等)。

5. 创建Spring应用上下文(ApplicationContext)

  • Spring Boot会创建一个默认的 AnnotationConfigApplicationContext 或者 GenericWebApplicationContext,它会扫描并加载所有的配置和Bean(包括自动配置的类)。
  • 这会根据应用程序中的配置类(标注@Configuration或其他配置注解)来初始化 Spring 容器,并自动注入相应的Bean。

6. 自动配置机制

  • Spring Boot提供了 自动配置 的机制,借助于 @EnableAutoConfiguration 注解,Spring Boot根据项目的依赖和配置自动判断需要哪些默认配置。
  • 例如,如果项目中有 spring-boot-starter-web 依赖,Spring Boot就会自动配置Tomcat作为Web服务器。

7. 运行SpringApplication的生命周期监听器

  • 在应用启动过程中,Spring Boot会触发不同的事件,允许开发者监听这些事件来定制应用的行为。比如,ApplicationEnvironmentPreparedEventApplicationContextInitializedEventApplicationPreparedEvent等事件。

8. 启动嵌入式Web服务器

  • 如果是Web应用(比如RESTful API应用),Spring Boot会自动启动一个嵌入式Web服务器。默认情况下,Spring Boot使用Tomcat作为Web服务器,但也可以使用Jetty或Undertow等。
  • Spring Boot会根据应用的配置自动启动嵌入式Web服务器,并将应用部署在该服务器上。

9. 执行 CommandLineRunner 或 ApplicationRunner

  • 如果应用中有实现了 CommandLineRunner 或 ApplicationRunner 接口的Bean,Spring Boot会在应用启动完成后执行这些接口中的 run() 方法。
  • 这通常用于应用启动后进行一些自定义的初始化工作,比如加载数据、初始化缓存等。

10. 应用启动完毕

  • 一旦Spring Boot应用完全启动,SpringApplication.run()方法返回并且控制权回到调用者(通常是main方法)。此时,Spring Boot应用就可以接收HTTP请求或执行其他任务。

关键点总结:

  • SpringApplication:应用启动的核心类。
  • 自动配置:Spring Boot根据项目依赖自动配置常见的服务和组件。
  • ApplicationContext:Spring应用上下文,管理所有Bean和配置信息。
  • 嵌入式Web服务器:默认启动嵌入式Web服务器(如Tomcat),可以根据需要替换为其他服务器。
  • 生命周期监听:Spring Boot通过事件机制触发生命周期相关的操作。

通过这些步骤,Spring Boot应用能够高效、快速地启动并提供服务。