在@SpringBootApplication复合注解中有一个注解是@EnableAutoConfiguration
@EnableAutoConfiguration 翻译就是自动配置,同样也是一个复合注解
关键功能是@Import注解
在AutoConfigurationImportSelector类的父类中有selectImport()方法,通过SpringFactoriesLoader.loadFactoryNames()扫描所有具有META-INF/spring.factories的jar包。把扫描到的这些文件的内容包装成properties对象,从properties中获取到EnableAutoConfiguration.class类(类名)对应的值,然后把他们加载到容器中
spring.factories文件是一组组key=value的形式,其中一个key是EnableAutoConfiguration类的全类名,value是一个xxxAutoConfiguration的类名列表,类名,分隔,每一个xxxAutoConfiguration类都是容器中的一个组件,都加入到容器中
根据不同的条件判断是否生效,一旦生效,就会给容器添加各种组件。
@Confitions注解判断是否生效