当前位置: 首页> 娱乐> 八卦 > 20240709每日后端--------Spring Boot的启动流程

20240709每日后端--------Spring Boot的启动流程

时间:2025/7/11 18:47:59来源:https://blog.csdn.net/weixin_42678822/article/details/140286529 浏览次数:0次

目标

了解Spring Boot的启动流程

步骤

每个 Spring Boot 项目都有一个用 @SpringBootApplication 注释的主启动类。


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

通过直接检查 SpringApplication.run 方法,你会发现整个启动过程分为两部分:SpringBootApplication构造函数和run方法的执行。

public static ConfigurableApplicationContext run(Class<?>[] primarySources, String[] args) {  return new SpringApplication(primarySources).run(args);
}

核心注释

当您打开 @SpringBootApplication 注释时,您会发现一堆注释,但重要的是要关注三个核心注释:

@SpringBootConfiguration


它是 @Configuration 注释的包装器。它通过JavaConfig配置bean,将当前类标记为配置类。

@EnableAutoConfiguration

打开 @EnableAutoConfiguration 注解可以看到两个核心注解:@AutoConfigurationPackage和@Import(AutoConfigurationImportSelector.class)

@AutoConfigurationPackage

@AutoConfigurationPackage与 @Component 注释的含义类似。一种用于手动添加注解来加载自动配置类,另一种用于扫描指定路径来注入bean。 @AutoConfigurationPackage 用于在单个路径中加载多个自动配置类时。该注解无需为每个类单独添加 @Import ,从而更方便地简单地导入包路径。 @ComponentScan 对于自定义包路径很有用,例如,当某些 Bean 与 SpringBootApplication 不在同一路径中时。

@Import(AutoConfigurationImportSelector.class)

@Import(AutoConfigurationImportSelector.class) 涉及 AutoConfigurationImportSelector 类,特别是它的 getCandidateConfigurations() 方法。此方法使用 SpringFactoriesLoader.loadFactoryNames() 查找并加载 META-INF/spring.factories 文件中列出的所有自动配置类。

@ComponentScan

1、默认情况下,它扫描当前包及其子包。用 @Component 、 @Controller 、 @Service 、 @Repository 等注解的类注册在容器中供使用。


上面的注释只是将必要的类加载到类路径中。获取类并将其转换为 bean 的实际过程发生在 run 方法中。因此,在回答这方面的问题时,建议先提及核心注释。主要的启动流程还是围绕SpringBootApplcation类的构造函数和run方法展开。

概括

Spring Boot应用程序启动的总体步骤。
1、整个Spring框架的启动分为两部分: constructing a SpringApplication object 和执行 run 方法。
2、核心注解 @SpringBootConfiguration 表示启动类是一个配置类。 @EnableAutoConfiguration 通过其内部 @Import 注释 AutoConfigurationImportSelector.class 实现自动配置。 @ComponentScan 默认情况下扫描当前目录及其子目录中的 bean。
3、构造函数:

  • 根据servlet类是否加载来判断是否为Web环境。
  • 检索所有初始化器,扫描 META-INF/spring.factories 下的所有
    ApplicationContextInitializer 子类并通过反射获取实例,以在Spring实例启动前后执行一些回调操作。
  • 检索所有监听器,与上面类似,扫描配置并加载相应的类实例。
  • 找到主要方法。
关键字:20240709每日后端--------Spring Boot的启动流程

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

责任编辑: