利用spi机制发现配置类并注册到spring容器中
以下示例使用springboot:3.2.1版本
相关注解
@SpringBootApplication
@EnableAutoConfiguration
AutoConfigurationImportSelector
使用@Import导入AutoConfigurationImportSelector
,随着springboot启动,会创建AutoConfigurationImportSelector的实例,通过该实例寻找所有自动配置类
-
在spring生命周期的beanfactory后置处理器处理阶段,后置处理器
BeanDefinitionRegistryPostProcessor
的实现类ConfigurationClassPostProcessor
,使用AutoConfigurationImportSelector
查找所有自动配置类AbstractApplicationContext#refresh AbstractApplicationContext#invokeBeanFactoryPostProcessors
org.springframework.boot.autoconfigure.AutoConfigurationImportSelector#getAutoConfigurationEntry
getCandidateConfigurations方法会读取META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports
文件中的内容作为自动配置类的全路径类名
之后会将读取到的所有自动配置类的全路径名通过DefaultListableBeanFactory#registerBeanDefinition
方法注册到spring容器中,这就意味着配置类开始生效