Spring是如何巧妙地解决那些可能导致循环依赖的复杂问题的?
- 内容介绍
- 文章标签
- 相关推荐
本文共计2854个文字,预计阅读时间需要12分钟。
首先解释什么是循环依赖,其实很简单,就是有两个类相互依赖。它们互相依赖对方才能完成自己的初始化。例如:
java@Componentpublic class AService { @Autowired private BService bService;}
@Componentpublic class BService { @Autowired private AService aService;}
首先解释下什么是循环依赖,其实很简单,就是有两个类它们互相都依赖了对方,如下所示:
@Component public class AService { @Autowired private BService bService; }
@Component public class BService { @Autowired private AService aService; }
AService和BService显然两者都在内部依赖了对方,单拎出来看仿佛看到了多线程中常见的死锁代码,但很显然Spring解决了这个问题,不然我们也不可能正常的使用它了。
所谓创建Bean实际上就是调用getBean() 方法,这个方法可以在AbstractBeanFactory这个类里面找到,这个方法一开始会调用getSingleton()方法。
本文共计2854个文字,预计阅读时间需要12分钟。
首先解释什么是循环依赖,其实很简单,就是有两个类相互依赖。它们互相依赖对方才能完成自己的初始化。例如:
java@Componentpublic class AService { @Autowired private BService bService;}
@Componentpublic class BService { @Autowired private AService aService;}
首先解释下什么是循环依赖,其实很简单,就是有两个类它们互相都依赖了对方,如下所示:
@Component public class AService { @Autowired private BService bService; }
@Component public class BService { @Autowired private AService aService; }
AService和BService显然两者都在内部依赖了对方,单拎出来看仿佛看到了多线程中常见的死锁代码,但很显然Spring解决了这个问题,不然我们也不可能正常的使用它了。
所谓创建Bean实际上就是调用getBean() 方法,这个方法可以在AbstractBeanFactory这个类里面找到,这个方法一开始会调用getSingleton()方法。

