【spring源码】spring的循环依赖
2021-05-30 18:06
标签:文件 业务 mamicode 容器 logger ref factor loading 架构设计 Spring的循环依赖是spring架构设计中比较精彩的一环,学习Spring的循环依赖设计,对我们进行业务架构设计还是很有裨益的。 这里通过debug介绍一下,spring如何通过三级缓存来实现循环依赖的。 spring通过三级缓存来实现循环依赖就需要了解spring的三级缓存机制。 spring缓存在 处理循环依赖的过程中并不是每个对象都要经历三个缓存。 我们创建两个对象A,B,同时A依赖B,B依赖A。通过debug来看spring是怎么处理循环依赖的。 同时配置xml配置文件。 这里我画了个流程图,通过流程图比文字更加容易理解。欢迎大家点赞。 https://www.processon.com/view/60770cf05653bb2e1c68f830 文字后续再补充。。。 【spring源码】spring的循环依赖 标签:文件 业务 mamicode 容器 logger ref factor loading 架构设计 原文地址:https://www.cnblogs.com/simple-flw/p/14748285.html图解Spring的循环依赖
前言
spring的三级缓存
BefaultSingletonBeanRegistry
中。
singletonObjects
是最终的Bean对象的缓存。也就是常说的IOC容器。earlySingletonObjects
也是缓存的bean对象,但是bean对象创建好了,但是并没有走完全部的bean的生命周期,也就是属性没有完成填充的bean对象。singletonFactories
缓存的bean对象的创建工厂。可以通过工厂的getObject
方法创建我们的bean对象。创建Demo
public class B {
protected final Log logger = LogFactory.getLog(getClass());
private A a;
public A getA() {
return a;
}
public void setA(A a) {
logger.info("B createing ......");
this.a = a;
}
}
public class A {
protected final Log logger = LogFactory.getLog(getClass());
private B b;
public B getB() {
return b;
}
public void setB(B b) {
logger.info("a creating....");
this.b = b;
}
}
Debug演示