网上已经有很多文章来说明bean循环依赖的原因了.
总结就是先把bean放到三级缓存(singletonFactory)中,方便被依赖的bean可以读到它。
那解决的方法就是不用构造方法来初始化bean,用属性注入即可,因为用属性注入才会放到三级缓存里,也就是
@Autowired
private Service1 service1;
可能有些项目大了,之前都是构造器注入,都改成属性注入又不好搞,所以有些旁门左道的方法:
用发布订阅来搞的话,其实不太好,因为会增加项目的复杂度,本来直观能看到每个类或者bean在什么地方引用,但是用事件去处理时就不是很直观了。
原文:https://www.cnblogs.com/huangwentian/p/14691291.html