循环依赖
Topic source我一开始也纳闷,debug试了没问题
private Set<String> creatingBeanNames;
creatingBeanNames 看作是正在被创建的Bean的集合
createBeanAsSingleton 有三种入口
1. 创建@Configuration类型的Bean
2. 创建普通的Bean
3. 递归执行
第一种方式必然不会循环依赖
第二种方式在执行前会检查instance是否已赋值,所以不会让creatingBeanNames重复
只有第三者情况,即在递归执行createBeanAsSingleton时,才可能存在重复;如果遇到重复的Bean,说明之前的Bean还没创建完成,也就说明有了循环依赖
- 1
解决循环以来的creatingName应该在每次执行createBeanAsSingleton()方法中初始化,有逻辑错误