SpringBoot启动原理详解(图文全面总结)

2024-11-06 23:16

SpringBoot启动原理是大厂经常被问的内容,下面我就来详解SpringBoot启动原理

一:SpringBoot启动入口

我们开发任何一个Spring Boot项目,都会用到如下的启动类。

如下图所示:

图片

@SpringBootApplication 是 Spring Boot 应用程序的入口注解,它包含了多个注解的组合,包括:@Configuration、@EnableAutoConfiguration 和 @ComponentScan。

如下图所示:

图片

1.@Configuration注解

@Configuration 注解表示这个类是一个配置类,它定义了一组 Spring Bean 的配置信息,可以使用 @Bean 注解来标注一个方法,将该方法返回的对象添加到 Spring 容器中。

2.@EnableAutoConfiguration注解

@EnableAutoConfiguration 注解表示开启自动配置功能,它可以根据当前项目所依赖的 jar 包和默认配置规则,自动完成 Spring Bean 的加载和配置。

3.@ComponentScan注解

@ComponentScan 注解表示启用组件扫描,可以自动扫描指定包路径下的所有组件,包括 @Controller、@Service、@Repository、@Component 等,并将其添加到 Spring 容器中。

综上所述,@SpringBootApplication 等价于 @Configuration + @EnableAutoConfiguration + @ComponentScan。

它将 Spring Boot 应用程序的配置、自动装配和组件扫描整合在了一起,大大简化了应用程序的开发和部署。

二:Spring Boot 应用启动

Spring Boot 应用的启动入口是 SpringApplication 类,它通过 SpringApplication.run() 方法启动 Spring Boot 应用。

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

该方法会执行以下操作,如下图所示:

图片

SpringBoot启动流程如下:

  1. 创建 SpringApplication 对象,读取默认配置。

  2. 分析命令行参数,解析配置文件,覆盖默认配置。

  3. 创建 ApplicationContext 对象,并将其初始化。

  4. 加载所有标注有 @Component、@Service、@Repository、@Controller 等注解的类,并将它们添加到 ApplicationContext 中。

  5. 启动 Spring Boot 应用程序的生命周期,执行应用程序的业务逻辑。

  6. 应用程序关闭时,销毁所有的 Spring Bean 和资源。

SpringApplication.run 方法完成了应用程序的启动和初始化工作,并将应用程序的控制权交给开发者,使得开发者可以专注于业务逻辑的实现。

相关文章
热点文章
精彩视频
Tags

站点地图 在线访客: 今日访问量: 昨日访问量: 总访问量: