SpringBoot的自动装配原理

Springboot中有一个主启动类,命名为XXXApplication
image
这个启动类上边有一个注解
@SpringBootApplication
这个注解是个复合注解
其定义如下
image
上面四个注解是Java中的元注解
自动配置主要是下面三个

  1. @SpringBootConfiguration
    就是个配置类,它是由@Configuration定义的,即@SpringBootConfiguration表明这是个配置类
  2. 接着是ComponentScan,注解可以帮助我们扫描当前包及其子包
  3. @EnableAutoConfiguration 这个注解是自动配置的核心
    image
    其中这个
    AutoConfigurationPackage这个注解的定义如下
    image
    @Import({Registrar.class})
    这个就是保存扫描路径,提供给spring-data-jpa,扫类似@Entity
    然后是AutoConfigurationImportSelector.class,
    这个注解,这个类里面有个方法
    image

这个方法返回一个数组,在这个方法调用一个getAutoConfigurationEntry方法,这个方法源码是

image

这个方法调用一个getCandidateConfigurations方法,这个方法,又去调用 SpringFactoriesLoader.loadFactoryNames,这个方法会从META-INF/Spring.facotries中加载配置信息(xxxxAutoConfiguration)
image

image

posted @ 2021-05-12 12:10  LiangLiangAA  阅读(61)  评论(0编辑  收藏  举报
theme: { name: 'geek', avatar: '', headerBackground: '' // ... },