spring中单例实例的循环依赖spring中单例实例的循环依赖
2021-09-11 18:30:55 0 举报
spring中单例实例的循环依赖spring中单例实例的循环依赖流畅
作者其他创作
大纲/内容
boolean earlySingletonExposure = (mbd.isSingleton() && this.allowCircularReferences && isSingletonCurrentlyInCreation(beanName)); if (earlySingletonExposure) { if (logger.isTraceEnabled()) { logger.trace(\"Eagerly caching bean '\" + beanName + \"' to allow for resolving potential circular references\
BeanUtils
Bean的实例化for (String beanName : beanNames){getBean(beanName);}
CircularRelyOnBeanB circularRelyOnBeanB = null
AbstractAutowireCapableBeanFactory
CircularRelyOnBeanA 内存空间
此时 circularRelyOnBeanB 还没有依赖注入;但是的了引用指向这个对象
会触发类中属性上带有@Autowired 注解的getBean操作 CircularRelyOnBeanB的实例化
getBean(beanName);
AbstractBeanFactory#doGetBean
DefaultListableBeanFactory#preInstantiateSingletons
流程主干线
口述Spring单例实例循环依赖的流程
// 根据beanName从一级缓存中拿实例Object sharedInstance = getSingleton(beanName);第一次实例化缓存中肯定不存在,获取的值为NULL。如果是单例的。
下面的流程先不要看了没梳理玩很深,先得到一个结论就行
0 条评论
下一页