SpringBoot自动装配原理

9 篇文章 0 订阅
9 篇文章 0 订阅

SpringBoot自动装配原理

什么是SpringBoot自动装配

        SpringBoot自动装配(Auto Configuration)就是SpringBoot将我们添加在项目中的依赖和配置自动加载并配置到Spring应用程序中。这也是SpringBoot的最重要的特性,简化Spring项目的手动配置,从而快速启动程序。

SpringBoot的执行流程(原理)

       Spring Boot的自动装配流程基于其核心注解和一系列配置机制,以下是对其工作流程的详细解析:

  1. 启动注解

           Spring Boot的自动装配始于@SpringBootApplication注解。这个注解实际上是@SpringBootConfiguration、@EnableAutoConfiguration和@ComponentScan三个注解的组合。

    • SpringBoot应用程序启动类源码如下:

          @SpringBootApplication
          public class Application {
          public static void main(String[] args) {
                  SpringApplication.run(Application.class, args);
              }
          }
      
    • @SpringBoot注解源码如下:

          @Target(ElementType.TYPE)
          @Retention(RetentionPolicy.RUNTIME)
          @Documented
          @Inherited
          @SpringBootConfiguration
          @EnableAutoConfiguration
          @ComponentScan
          public @interface SpringBootApplication {
          }
      
  2. @SpringBootConfiguration

           @SpringBootConfiguration注解本质上是一个@Configuration注解的包装,用于声明当前类是一个配置类,可以定义Bean,也可以引入其他配置类。

  3. @EnableAutoConfiguration

           这是实现自动装配的关键注解。它包含了@AutoConfigurationPackage和@Import(AutoConfigurationImportSelector.class)两个子注解。

    • @AutoConfigurationPackage:用于自动配置包,使得主配置类(带有@SpringBootApplication注解的类)所在的包及其子包中的组件都能被Spring容器扫描到。

    • @Import(AutoConfigurationImportSelector.class):这个注解的作用是导入类,但在这里它并不是直接导入一个普通的类,而是导入了一个实现了ImportSelector接口的类AutoConfigurationImportSelector。这个类的作用是根据一定的规则(比如类路径下的META-INF/spring.factories文件)来加载并配置一些自动装配的类。

  4. META-INF/spring.factories

           在Spring Boot的自动装配过程中,META-INF/spring.factories文件起到了非常关键的作用。这个文件是Spring Boot用来加载自动配置类的一个约定俗成的文件,它位于各个Spring Boot Starter的jar包中。Spring Boot在启动时,会扫描所有jar包中的META-INF/spring.factories文件,并将其中配置的自动配置类加载到Spring容器中。

  5. 自动配置类

           这些类通常是以AutoConfiguration结尾的,它们使用@Configuration注解标注,并且内部定义了一些Bean。这些Bean就是Spring Boot自动装配到Spring容器中的组件。

  6. 条件装配

           在自动配置类中,经常可以看到@ConditionalOnClass、@ConditionalOnProperty等条件注解。这些注解的作用是判断当前环境是否满足某个条件,如果满足则进行自动装配,否则不进行装配。这样可以根据项目的实际情况来灵活地选择需要装配的组件。

  7. 总结

           Spring Boot的自动装配工作流程大致可以归纳为:首先通过@SpringBootApplication注解启动Spring Boot应用,然后利用@EnableAutoConfiguration注解中的@Import(AutoConfigurationImportSelector.class)来加载META-INF/spring.factories文件中配置的自动配置类,最后根据这些自动配置类中的定义和条件注解来将相应的组件装配到Spring容器中。

  • 24
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

墨尘儿

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值