SpringBoot自动配置原理

一、什么是自动配置

       SpringBoot的自动配置就是当spring容器启动后,一些自动配置类(只是自动配置类,并不是当前组件配置到IOC容器当中,自动配置类通过@Conditional注解来按需配置)就自动装配的IOC容器中,不需要我们手动去注入,从而简化了开发,省去了繁琐的配置。

二、SpringBoot自动配置原理

        Spring Boot的启动类上有一个@SpringBootApplication注解,这个注解是SpringBoot实现自动配置必不可少的注解。接着我们来看一下这个注解的详细作用。

        当我们进去到 @SpringBootApplication 注解的源码当中,可以发现它是一个复合注解,它是由 @SpringBootConfiguration + @EnableAutoConfiguration + @ComponentScan 这三个注解组成。

①@ComponentScan 注解:

        这个注解在Spring中很重要 ,它对应XML配置中的元素。

        作用:自动扫描并加载符合条件的组件或者bean , 将这个bean定义加载到IOC容器中

②@SpringBootConfiguration

作用:SpringBoot的配置类 ,标注在某个类上 , 表示这是一个SpringBoot的配置类;

我们来看一下这个注解的内部:

③@EnableAutoConfiguration开启自动配置功能

       以前我们需要自己配置的东西,而现在SpringBoot可以自动帮我们配置 ;@EnableAutoConfiguration:告诉SpringBoot开启自动配置功能,这样自动配置才能生效;

        而@EnableAutoConfiguration注解内部使用 @Import(AutoConfigurationImportSelector.class)来加载配置类。而@Import(AutoConfigurationImportSelector.class)注解的作用就是给容器中导入组件。

总结:

      在启动类的run方法传入启动类的class(方便后面获取其注解信息)。执行run方法,创建SpringApplication对象,并用LoadSpringFactories()方法将/META-INF/spring.factories文件里的k-v读入缓存(方便后面加载时使用)。然后继续run方法,在某处会获取传入的启动类的class,并解析上面的注解,当解析到@Import({AutoConfigurationImportSelector.class})时会将AutoConfigurationImportSelector加载进方法区,通过反射创建对象,调用其某一个方法,从缓存读取前面存储的k-v,并经过一系列的过滤、去重等,最后将需要的配置类加载,生成BD对象,创建Bean对象,放入spring容器。

  • 4
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值