SpringBoot的启动原理?

大家好,我是锋哥。今天分享关于【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.propertiesapplication.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. 执行 CommandLineRunnerApplicationRunner

  • 如果应用中有实现了 CommandLineRunnerApplicationRunner 接口的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应用能够高效、快速地启动并提供服务。

相关推荐
程序员小假16 小时前
设计模式了解吗,知道什么是饿汉式和懒汉式吗?
java·后端
清风与日月16 小时前
c#事件委托示例
开发语言·c#
拾忆,想起16 小时前
TCP粘包拆包全解析:数据流中的“藕断丝连”与“一刀两断”
java·网络·数据库·网络协议·tcp/ip·哈希算法
后端小张16 小时前
【JAVA 进阶】穿越之我在修仙世界学习 @Async 注解(深度解析)
java·开发语言·spring boot·后端·spring·注解·原理
Yeats_Liao16 小时前
Go Web 编程快速入门 18 - 附录B:查询与扫描
开发语言·前端·后端·golang
国服第二切图仔16 小时前
Rust实战开发之图形界面开发入门(egui crate)
开发语言·后端·rust
Zhangzy@16 小时前
Rust 依赖管理与版本控制
开发语言·后端·rust
ChMao16 小时前
java解析word中的excel
java
百锦再16 小时前
第6章 结构体与方法
android·java·c++·python·rust·go
Momentary_SixthSense16 小时前
rust表格文件处理
开发语言·rust