概览
由前文可知,ConfigurationClassPostProcessor是作为Spring中的内置类被添加到容器中,
ConfigurationClassPostProcessor不仅实现了BeanFactoryPostProcessor(BFPP)并且实现了BeanDefinitionRegistryPostProcessor
,具有比一般BFPP更高的初始化优先级,在容器的启动过程中处理了@Configuration、@ComponentScan、@Import、@ImportResource注解,根据注解信息创建BeanDefinition。
processConfigBeanDefinitions()
首先看processConfigBeanDefinitions方法,遍历了容器中的所有BD,并从中过滤出配置类
何为配置类?我们再接着看checkConfigurationClassCandidate
方法
配置类分为以下两种
- Full配置类,存在@Configuration,并且proxyBeanMethods不为false(为true或为null)时,就是Full配置类
- lite配置类:
- 存在@Configuration,并且proxyBeanMethods为false时,是lite配置类
- 不存在@Configuration,但是只要存在@Component、@ComponentScan、@Import、@ImportResource四个中的一个,就是lite配置类
- 不存在@Configurations,只要存在@Bean注解了的方法,就是lite配置类