另一方面,Spring启动过程分析:1.启动Spring容器时调用所有BeanFactoryPostProfessor的postProcessBeanFactory ()方法, 首先调用和启动所有beandefinitionregistrypostprocessor类型的(annotationconfigapplicationcontext )时,在容器中配置configurationclasspostprocestpront
让我们看看configuration classpostprofessor的执行步骤。
1 )在parser.parse(candidates )中分析配置类的所有注释
2 )如果解析为@Import注释,则判断Import中的类。 有三种情况。
常规类importseletorImportBeanDefinitionRefistrar对importbeandefinitionrefistrar的处理如下:
我们把它放在了ConfigurationClass的importBeanDefinitionRegistrars中。
ConfigurationClass将添加到parser的configurationClasses中。
3 )分析所有注释后,运行遍历所有ConfigrationClasses中的importBeanDefinitionRegistrars (注册类) )方法。
2 .调用所有beandefinitionregistrypostprocessor类型的BeanFactoryPostProfessor后,beandefintionregistrypostprocessorpriortiortioryordor
3 .调用实现beandefintionregistrypostprocessorordered接口的实现类;
4 .最后,在运行所有beandefinition registrypostprocessor类型的beanfactorypostprofessor (配置器)后,重新创建容器
二、@MapperScan处理1.@MapperScan注释:
将ConfigurationClassPostProcess解析为带有@MapperScan注释的配置类后,检索MapperScannerRegistrar,MapperScannerRegistrar是ii
方法将MapperScannerConfigurer添加到容器中。 该信息如下:
2.mapperscannerconfigurer:invokebeanfactorypostprocessors ()的结尾,因为此类实现了beandefinitionregistrypostprocess接口
scanner的scan(方法扫描在@MapperScan中配置的路径下的所有mapper接口。 scan ) )方法的详细信息将在下一篇文章中讨论。