Spring注解驱动核心-ConfigurationClassPostProcessor
注解驱动核心-ConfigurationClassPostProcessor执行流程首先获取容器所有注册过的beanName遍历beanName挨个检查它是否为配置类检查流程检查通过的放到列表configCandidates中获取类的注解元数据AnnotationMetadata获取Configuration注解拿注解配置的proxyBeanMethods默认为true会设置为full否则设置为lite。如果没有这个注解就说明不是配置类下面这些情况有Configuration同时proxyBeanMethods为falseComponent、ComponentScan、Import、ImportResource或者类里面包含了任意一个 Bean 方法会被标记为lite返回true配置类相关注解Full模式如果有Configuration就是了Lite模式Spring5.2后大部分配置类都用的lite模式。只有Configuration默认是full有Configuration但proxyBeanMethodsfalse经过上面的解析所有的bean都会被注册了Component、Service、Repository、Controller / RestController、ComponentScan、Import、ImportResource、Bean前面遍历bean并且选出配置类后会得到它们的BD。下面开始do while解析配置类。因为在解析配置的时候还可能出现先的配置类。解析通过ConfigurationClassParser会保存所有解析过的类。在解析过程出现的类会通过BDReader进行注册。判断当前解析完的Bean的数量是否 大于 最后beanName的数量如果大于说明有新的类创建几个list旧的beanname最新的beanName遍历最新的beanName判断不在旧的beanName列表中说明是新加的检查是否为配置类如果是添加到列表candidates中。do while循环处理直到candidates为空了说明都处理完了注册ImportRegistry清理缓存