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

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

SpringBoot启动原理是Java面试经常被问的内容,下面我就来详解SpringBoot启动原理@mikechen

一:SpringBoot启动入口

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

如下图所示:

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

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

如下图所示:

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

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启动原理详解(图文全面总结)-mikechen

SpringBoot启动流程如下:

  1. 创建 SpringApplication 对象,读取默认配置。
  2. 分析命令行参数,解析配置文件,覆盖默认配置。
  3. 创建 ApplicationContext 对象,并将其初始化。
  4. 加载所有标注有 @Component@Service@Repository@Controller 等注解的类,并将它们添加到 ApplicationContext 中。
  5. 启动 Spring Boot 应用程序的生命周期,执行应用程序的业务逻辑。
  6. 应用程序关闭时,销毁所有的 Spring Bean 和资源。

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

以上就是SpringBoot启动原理详解,更多内容请查看:SpringBoot框架(万字图文全面详解)

陈睿mikechen

十余年BAT架构经验,资深技术专家,就职于阿里、淘宝、百度等一线互联网大厂。

关注「mikechen」公众号,获取更多技术干货!

后台回复面试即可获取《史上最全阿里Java面试题总结》,后台回复架构,即可获取《阿里架构师进阶专题全部合集

评论交流
    说说你的看法