好了 我们聊聊 Bean 的实例化过程的几个重要角色
BeanDefinitionRegistryPostProcessor 接口
Refresh().invokeBeanFactoryPostProcessors 这个方法里面。
BeanDefinitionRegistryPostProcessor 这个接口的调用分为三部:
1、调用实现了 PriorityOrdered 排序接口
2、调用实现了 Ordered 排序接口
3、没有实现接口的调用
这个接口我的理解:获取 Bean本文来源[email protected]搞@^&代*@码)网5DefinitionRegistry 对象,获取到这个对象就可以获取这个对象中注册的所有 BeanDefinition 对象,所以我们知道了,我们拥有这个对象就可以完成里面所有 BeanDefinition 对象的修改新增操作
BeanPostProcessor 的注册
拿到 BeanFactory 中所有注册的 BeanDefinition 对象的名称 beanName。
把 beanName 添加到 singletonsCurrentlyInCreation Set 容器中,在这个集合里面的 bean 都是正在实例化的 bean,就是实例化还没做完的 BeanName
这个方法是 bean 实例化核心方法
实例化方法,把 bean 实例化,并且包装成 BeanWrapper点进这个方法里面。