SpringBoot的自动装配原理
Springboot中有一个主启动类,命名为XXXApplication
这个启动类上边有一个注解
@SpringBootApplication
这个注解是个复合注解
其定义如下
上面四个注解是Java中的元注解
自动配置主要是下面三个
- @SpringBootConfiguration
就是个配置类,它是由@Configuration定义的,即@SpringBootConfiguration表明这是个配置类 - 接着是ComponentScan,注解可以帮助我们扫描当前包及其子包
- @EnableAutoConfiguration 这个注解是自动配置的核心
其中这个
AutoConfigurationPackage这个注解的定义如下
@Import({Registrar.class})
这个就是保存扫描路径,提供给spring-data-jpa,扫类似@Entity
然后是AutoConfigurationImportSelector.class,
这个注解,这个类里面有个方法
这个方法返回一个数组,在这个方法调用一个getAutoConfigurationEntry方法,这个方法源码是
这个方法调用一个getCandidateConfigurations方法,这个方法,又去调用 SpringFactoriesLoader.loadFactoryNames,这个方法会从META-INF/Spring.facotries中加载配置信息(xxxxAutoConfiguration)