ComponentScan扫描组件流程图
2023-08-31 10:05:40 1 举报
Spring注解@ComponentScan扫描组件流程图
作者其他创作
大纲/内容
invokeBeanFactoryPostProcessors()
ConfigurationClassParserparse()
AbstractApplicationContextrefresh()
该方法主要是处理、解析配置类,根据解析判断不是配置类就会直接返回,不再做后续相关注解解析
Spring启动
ClassPathBeanDefinitionScannerdoScan()
调用、执行所以已经注册在Spring容器中的bean工厂后置处理器的处理方法逻辑
ConfigurationClassPostProcessor就是一个BeanFactoryPostProcessor后置处理器
之前的流程是解@ComponentScan,获取到所有声明了@Component的组件beanDefinition信息,然后根据beanDefinition再次循环调用配置类解析方法,解析@Component,最后注入到Spring容器中
解析核心所在之处
Set<BeanDefinitionHolder> scannedBeanDefinitions
ConfigurationClassPostProcessorpostProcessBeanDefinitionRegistry()
这里根据扫描解析,获取到beanDefinition
生成配置类解析器进行解析
初始化一个ClassPathBeanDefinitionScanner扫描器,根据componentScan的属性,设置扫描器的属性
processConfigBeanDefinitions()
refresh()方法是Spring容器初始化、进行封装的核心入口
doProcessConfigurationClass()
遍历扫描包,调用findCandidateComponents方法根据基础包路径来找到候选的Bean
ComponentScanAnnotationParserparse()
粗体是类斜体是类的调用方法
processMemberClasses()
0 条评论
下一页