SpringBoot自动装配
自动装配就是自动地把其他组件中的Bean装载到IOC容器中,不需要开发人员再去配置文件中添加大量的配置
源码分析
@EnableAutoConfiguration:SpringBoot实现自动化配置的核心注解
AutoConfigurationImportSelector类分析
public class AutoConfigurationImportSelector...{...protected List<String> getCandidateConfigurations(AnnotationMetadata metadata, AnnotationAttributes attributes) {List<String> configurations = new ArrayList<>(SpringFactoriesLoader.loadFactoryNames(getSpringFactoriesLoaderFactoryClass(), getBeanClassLoader()));ImportCandidates.load(AutoConfiguration.class, getBeanClassLoader()).forEach(configurations::add);Assert.notEmpty(configurations,//扫描"No auto configuration classes found in META-INF/spring.factories nor in META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports. If you "+ "are using a custom packaging, make sure that file is correct.");return configurations;}
}
条件装配
并不是读取到的所有的配置类中Bean都会被初始化,在配置类中使用@Condition来加载满足条件的Bean
- ConditionalOnClass: 判断环境中是否有对应字节码文件才初始化Bean
- ConditionalOnProperty: 判断配置文件中是否有对应属性和值才初始化Bean
- ConditionalOnMissingBean:判断环境中没有对应Bean才初始化Bean