"Bean with name '" + beanName + "' has been injected into other beans [" +
StringUtils.collectionToCommaDelimitedString(actualDependentBeans) +
"] in its raw version as part of a circular reference, but has eventually been " +
"wrapped. This means that said other beans do not use the final version of the " +
"bean. This is often the result of over-eager type matching - consider using " +
"'getBeanNamesOfType' with the 'allowEagerInit' flag turned off, for example.");
}
}
}
1)当发现最初的Bean和ExposedObject不一致的时候(这里其实值得推敲的,只有BeanPostProcessor会导致Bean的版本更新,但是负责处理代理的BeanPostProcessor也会导致版本更新,最后岂不是和普通的BeanPostProcessor一样走到else里面去抛异常了,诡异了!仔细想想负责处理代理的BeanPostProcessor是不会导致Bean的版本更新的,所以最后要把getSingleton取出来的最新版本的Bean赋给它,好好理解吧,真不知道怎么解释了)就会走到else里面,看看else里面的逻辑:
2)检查所以依赖到该Bean的哪些Bean们,如果他们已经创建了,那么抛异常!这就是为什么用alreadyCreated的原因,因为原型Bean C如果依赖到了该Bean A的话,原型Bean C还能用么?当然作废了,而且还无法解决,框架只能抛异常告诉程序员 。
【Spring 是如何解决循环依赖的】
推荐阅读
- 柚子头尖的好还是圆的好 柚子平头和尖头哪个好吃
- 如何对网站进行有效的SEO操作?
- JS中操作DOM是"同步"还是"异步"
- 梦到门牙掉了还出血了预示着什么? 梦到门牙掉了是什么意思 周公解梦
- 如何增加小程序曝光?
- 梦见猪屎弄到自己身上是什么意思 梦见猪屎满地都是什么意思
- 快手主页上的快手小店是怎么设置的 快手小店怎么上传单号
- 什么是数据库分库分表?
- 冲泡黄山毛峰有以下几点是要值得注意
- 肉松椒盐发面饼的做法
