1.FactoryBean的使用
2.doGetBean会先尝试从缓存中获取bean,scope为prototype时bean并不会缓存,所以缓存获得的对象均是单例的bean实例
3.getSingleton方法不仅仅是从缓存的map-->singletonObjects获取bean的,他,通过条件判断如果当前doGetBean是属于循环引用的获取的情况下,会尝试从earlySingletonObjects中获取objectFactory,并调用obejctFactory.getObject获取earlyBean并放到earlySingletonObjects;与singletonObjects不同的是,bean在创建过程中就会将该bean放到map,用于检测循环引用
4. scope为protoType时的循环依赖,直接抛出异常
5.在getBean过程中会递归的调用getBean创建要创建的bean的依赖bean对象,depends-on配置的bean
6.getBean方法创建的bean可能不是真正需要的bean,而是factoryBean。所以在调用完创建bean的相关方法后,还有如下方法调用
主要实现如下其实就是factoryBean.getObject()方法的调用。
7.上述的方法在实际调用factoryBean.getObject()成功,可能需要对创建的object进行post-process处理,这是个扩展点
由于bean已经初始化了,所以此处的调用是 BeanPostProcessor的postProcessAfterInitialization方法