参考博客: https://blog.csdn.net/zl1zl2zl3/article/details/86071240
个人理解:
(1)如果用构造函数循环初始化所需要的bean的时候,比如文中C初始化的它所需要依赖的时候发现A已经在初始化状态了,就抛出异常。
(2)如果用autowored注入(也就是默认的方式),会先把各个bean实例化放到map中,进而给属性赋值。(推荐用法)
(3)如果多例模式不会进行缓存,无法提前暴露出一个创建中的Bean。
bean如何进行依赖检查的:
主要代码在AbstractAutowireCapableBeanFactory类的checkDependencies方法中:
对设置依赖检查模式的bean进行对应的依赖检查,不满足就报错。