SpringBoot的启动原理?

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

SpringBoot的启动原理?

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

Spring Boot 的启动原理可以通过以下几个步骤来简要解释:

1. Main方法启动

Spring Boot 应用程序通常以一个 main 方法启动,使用的是 SpringApplication.run() 方法来启动应用。这个方法是 Spring Boot 应用程序启动的入口。

public class Application {
    public static void main(String[] args) {
        SpringApplication.run(Application.class, args);
    }
}

2. SpringApplication 类

SpringApplication 是 Spring Boot 的核心类,它的 run() 方法负责启动整个 Spring 上下文,并初始化 Spring 容器。

当你调用 SpringApplication.run() 时,内部会做以下几件事:

  • 创建 SpringApplication 实例: 这个实例会启动 Spring 容器的加载过程。
  • 设置环境属性: Spring Boot 会从环境中加载一些配置(例如应用的端口、配置文件路径等),并使用默认配置。
  • 启动 BeanFactory: Spring Boot 通过 Spring 的 ApplicationContext(默认是 AnnotationConfigApplicationContext)来启动 BeanFactory,它负责管理应用程序的 Beans(对象)。

3. 加载 Spring Context

Spring Boot 启动时,会自动加载 Spring 配置类和配置文件(例如 application.propertiesapplication.yml)。Spring 容器会通过扫描指定的包和配置文件来初始化 Spring 环境和各个 Bean。

4. 自动配置(Auto Configuration)

Spring Boot 提供了一种 自动配置 机制。它会根据应用程序的依赖来自动配置 Spring 环境。例如,如果应用依赖了 spring-boot-starter-web,Spring Boot 会自动配置嵌入式的 Web 服务器(如 Tomcat、Jetty 或 Undertow)。

自动配置的核心是 @EnableAutoConfiguration 注解,Spring Boot 会根据类路径中的库来判断应用程序需要哪些配置,并通过特定的配置类来实现自动配置。

@SpringBootApplication
public class Application {
    public static void main(String[] args) {
        SpringApplication.run(Application.class, args);
    }
}

@SpringBootApplication 注解包含了 @EnableAutoConfiguration,这意味着自动配置机制是启用的。

5. 嵌入式 Web 容器启动

Spring Boot 默认支持嵌入式 Web 容器(如 Tomcat、Jetty 或 Undertow)。当你的应用是一个 Web 应用时,Spring Boot 会自动初始化并启动 Web 容器。如果是一个非 Web 应用,则不会启动 Web 容器。

6. ApplicationContext 初始化

在 Spring Boot 启动过程中,ApplicationContext 被初始化,并且通过 @ComponentScan 注解扫描配置类、组件、服务等 Bean,并将它们注入到 Spring 容器中。

7. ApplicationRunner / CommandLineRunner

Spring Boot 提供了 ApplicationRunnerCommandLineRunner 接口,这些接口可以用来在 Spring Boot 启动后执行一些初始化代码。它们分别接收两种类型的参数来执行应用程序的启动后逻辑:

@Component
public class StartupRunner implements CommandLineRunner {
    @Override
    public void run(String...args) throws Exception {
        System.out.println("应用已启动,执行初始化操作");
    }
}

总结

Spring Boot 启动过程大致如下:

  1. 调用 SpringApplication.run() 启动应用程序。
  2. Spring Boot 初始化 Spring 上下文,并通过自动配置来加载相应的 Bean。
  3. 如果是 Web 应用程序,Spring Boot 会自动初始化嵌入式 Web 容器(如 Tomcat)。
  4. 应用启动ApplicationContext 被初始化,并扫描和注册应用中的 Beans。
  5. 自动配置生效,根据类路径中的依赖加载默认配置。
  6. 应用可访问,Spring Boot 启动成功后,应用准备好接受请求。

这样,Spring Boot 通过自动化配置和嵌入式容器的使用,极大地简化了 Java Web 应用程序的配置和启动过程。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值