Spring 源码解析九(属性填充)流程图

补充资料:

Spring 源码解析九(属性填充)流程图_第1张图片

当第一次getBean(y)后调doCreateBean(x) 方法执行完后回 放到singletonsCurrentlyInCreation 中一个标记为正在创建,把一个new好的bean放在一个singletonFactories 中。 然后只是populateBean(y),resolveDependency(). resolveCandidate() 方法时候第二次调用getSingleton()方法此时这个singletonsCurrentlyInCreation已经标记为正在创建 ,然后会通过singletonFactories中判断有没有这个bean 如果有就直接从singletonFactories中获取 获取之后把bean放在 earlySingletonObjects 中,同时从singletonFactories移除这个bean。.第一次调用getBean 方法的 getSingleton()不会进图37的这个183行 ,因为isSingletonsCurrentlyInCreation 等于false。

 

你可能感兴趣的:(spring)