Spring Bean的加载步骤值得研究下。
1. 转换对应的BeanName
从传入的beanName获取最终的beanName.
2. 尝试从缓存中加载单例
尝试从缓存中加载,如果没有,从singletonFactories中加载
原则:不能在bean创建完成后就将创建的ObjectFactory提前曝光到缓存中(为了避免循环依赖)
3. bean的实例化
从缓存种获取的只是bean的原始状态,需调用工厂获取bean的方法。
4. 原型模式的依赖检查
只有单例模式才会尝试解决循环依赖。
5. 检测parentBeanFactory
缓存没数据则直接从父类工厂加载
6. XML的GenerateBeanDefinition,先获取RootBeanDefinition
7. 寻找依赖
先初始化依赖、
8. 针对不同的scope进行创建
默认singleton