@EnableAutoConfiguration的autoConfigrationImportSelector是查询到了spring.factories里面对应的java config类全路径,但是在哪里反射创建实例并加载到IOC容器的?
1条回答 默认 最新
- 穿白衬衣的少年 2021-03-03 09:43关注
大多数网上博客说到springboot自动装配原理,都说@EnableAutoConfiguration注解里面import了EnableAutoConfigurationImportSelector,EnableAutoConfigurationImportSelector从spring.factories中加载自动配置类到容器。
但是从来没有说过EnableAutoConfigurationImportSelector什么时候执行,谁调用的!!!
其实自动装配是基于spring的PostProcessor实现的,不过不是常见的BeanPostProcessor和BeanFactoryPostProcessor,而是BeanDefinitionRegistryPostProcessor,继承BeanFactoryPostProcessor,在BeanFactoryPostProcessor之前执行。
BeanDefinitionRegistryPostProcessor有一个实现类——ConfigurationClassPostProcessor,由ConfigurationClassPostProcessor最终调用了AutoConfigurationImportSelector获取了beanName,在ConfigurationClassParser中解析生成bean
后续准备写一篇博客专门介绍
解决 1无用