孙哥Spring源码第19集

第19集 refresh()-invokeBeanFactoryPostProcessor 三- Import三种形式的处理过程

【视频来源于:B站up主孙帅suns Spring源码视频】【微信号:suns45】

1、ImportBeanDefinitionRegister的处理过程

孙哥Spring源码第19集_第1张图片
在processImports处理@Import注解中 ImportBeanDefinitionRegister形式的
1. 分析到ImportBeanDefinitionRegister仅仅是进行了实例化工作。最后把他添加到了configClass中
2. 不支持在ImportBeanDefinitionRegister中在引入@Import注解
3. 处理完成后,同样没有创建BD 更没有进行注册

2、不递归处理ImportBeanDefinitionRegister的原因

不支持在ImportBeanDefinitionRegister中引入@Import注解

3、普通@Import的处理过程

1. 没有进行任何修饰的普通类 @Import注解处理过程中,最后处理成了@Configuration。
2. 但是没有创建BD.没有注册
孙哥Spring源码第19集_第2张图片

4、loadBeanDefinitions(configClasses)加载除ComponentScanner之外的BD

核心作用:把在parser方法中没有创建BD,且注册的几种情况,在这个操作中统一注册

孙哥Spring源码第19集_第3张图片 孙哥Spring源码第19集_第4张图片 孙哥Spring源码第19集_第5张图片

5、防止@ImportResource注入xml导致@Import嵌套

孙哥Spring源码第19集_第6张图片 孙哥Spring源码第19集_第7张图片 孙哥Spring源码第19集_第8张图片

6、总结InvokeBeanFatoryPostProcessor

核心工作就是:调用postProcessBeanDefinitionRegistry的 processConfigBeanDefinitions完成了我们开发过程中所涉及到的应用不同的形式和应用不同的注解,最后BeanDefinition注册完成的工作。

7、总结处理Import

解析三种形式的Import在处理的过程中并不会完成注册,而是在loadBeanDefinitions中进行注册。
这里需要注意一点,代码里面防止了@ImportResource注入xml导致@Import嵌套。

你可能感兴趣的:(spring,java,后端)