SpringBoot的自动装配,就是将市面上通用的组件写好了配置类,当我们程序去依赖这些组件的jar包之后,启动SpringBoot应用就会进行自动装备。
springBoot自动配置主要是通过@EnableAutoConfiguration,@Conditional,@EnableConfigurationProperties来进行自动装配的。
@EnableAutoConfiguration 是开启自动配置的注解,他主要作用是调用Spring-core包里的loadFactoryNames()方法,将autoConfig包里已经写好的配置自动装配进来。
@Conditional 是条件注解,通过判断类路径下有没有相应的jar包来确定是否加载和自动装配这个类。
@EnableConfigurationProperties 的作用就是给自动配置提供具体的配置参数,只需要写在application。properties中,就可以通过映射写入配置类的pojo属性中
@SpringBootApplication注解中有三个注解,分别是:@SpringBootConfiguration,@EnableAutoConfiguration,@ComponentScan。
@EnableAutoConfiguration注解中点进去有一个@Import(EnableAutoConfigurationImportSelector.class)注解,我们找到括号中的EnableAutoConfigurationImportSelector.class类中找到他继承的父类AutoConfigurationImportSelector.class。在AutoConfigurationImportSelector.class类中找到selectImports()方法,这个方法又调用了getCandidateConfiguration()方法,在这个方法里面油条用了了Spring-core包中的loadFactoryName()方法。这个方法就会查询META-INF/spring.factories文件中包含的jar文件,找到spring.factories文件之后,SpringFactoriesLoader将查询配置文件中命名的属性。
可以根据我说的步骤一步一步点进去看,就会发现这中间自动装配的流程,一定需要自己亲身操作才会记忆的更牢靠!