核心子方法5: invokeBeanFactoryPostProcessors(beanFactory)方法详解
先总结: 该方法通过指定顺序, 遍历调用各种实现了BeanDefinitionRegistryPostProcessor接口或BeanFactoryPostProcessor接口, 的beanFactory后处理器
注: BeanDefinitionRegistryPostProcessor接口继承了BeanFactoryPostProcessor接口
调用顺序:
1.先调用已经提前放入ApplicationContext应用程序上下文beanFactoryPostProcessors属性中的实现了BeanDefinitionRegistryPostProcessor接口的postProcessBeanDefinitionRegistry方法
2.按照优先级调用实现了PriorityOrdered接口(有PriorityOrdered注解)的BeanDefinitionRegistryPostProcessor -> postProcessBeanDefinitionRegistry方法
3.按照优先级调用实现了Ordered接口(有Ordered注解)的BeanDefinitionRegistryPostProcessor -> postProcessBeanDefinitionRegistry方法
4.最后,调用所有剩下的BeanDefinitionRegistryPostProcessors -> postProcessBeanDefinitionRegistry方法
5.按照上面的顺序调用BeanDefinitionRegistryPostProcessors -> postProcessBeanFactory方法
6.调用已经提前放入ApplicationContext应用程序上下文中实现了BeanFactoryPostProcessor接口的postProcessBeanFactory方法
7.按照优先级调用实现了PriorityOrdered接口(有PriorityOrdered注解)的BeanFactoryPostProcessor-> postProcessBeanFactory方法
8.按照优先级调用实现了Ordered接口(有Ordered注解)的BeanFactoryPostProcessor-> postProcessBeanFactory方法
9.最后,调用所有剩下的BeanFactoryPostProcessor-> postProcessBeanFactory方法
调用总结:
1.优先调用实现BeanDefinitionRegistryPostProcessor接口的, 后调用实现BeanFactoryPostProcessor接口的
2. 优先提前放入ApplicationContext应用程序上下文的, 后调用实现了PriorityOrdered接口的, 再调用实现了Ordered接口的, 最后调用其它的
核心BeanFactory后处理器: ConfigurationClassPostProcessor
此类是一个后置处理器的类,主要功能是参与BeanFactory的建造,主要功能如下
1、解析加了@Configuration的配置类
2、解析@ComponentScan扫描的包
3、解析@ComponentScans扫描的包
4、解析@Componen注解
5、解析@Import注解
6、解析@ImportResource注解
7、解析@PropertySource注解
8、解析@Bean注解
方法1: postProcessBeanDefinitionRegistry 定位、加载、解析、注册相关注解
方法2: postProcessBeanFactory 对加了@Configuration的配置类进行CGLIB增强处理(代理配置类),添加ImportAwareBeanPostProcessor后置处理类
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 单元测试从入门到精通
· 上周热点回顾(3.3-3.9)
· winform 绘制太阳,地球,月球 运作规律