在spring-boot中@EnableAutoConfiguration 和 AutoConfigurationImportSelector是一对
@EnableAutoConfiguration用于声明加载spring.factories中EnableAutoConfiguration的实现
AutoConfigurationImportSelector 类则是实现这个加载逻辑
本章使用的知识点来自spring AbstraceApplicationContext refresh 里的invokeBeanFactoryPostProcessors 方法。 简单说一下这个处理跟@EnableAutoConfiguration的关系, 是因为invokeBeanFactoryPostProcessors处理注解@Configuration/@Component/@Import/@ImportResource/@ComponentScan; 刚好@EnableAutoConfiguration有@Import,所以触发了AutoConfigurationImportSelector的getAutoConfigurationEntry方法;
AutoConfigurationImportSelector.getAutoConfigurationEntry
该方法主要处理的事有
1、加载spring.factores中的EnableAutoConfiguration实现类;
2、排除配置EnableAutoConfiguration
3、过滤掉@ConditionXX不满足的EnableAutoConfiguration类
总结
spring-boot扩展了ImportSelector的实现,完成EnableAutoConfiguration实现类的加载。
spring-boot默认不开启EnableAutoConfiguration, 需要在mian类上加@EnableAutoConfiguration
网友评论