目录
前言
spring三级缓存用来解决spring的循环依赖问题
目前循环依赖只在属性set注入且单例的情况下才能解决
构造器注入和多例的循环依赖情况下是无法解决的
提示:以下是本篇文章正文内容,下面案例可供参考
一、spring三级缓存是什么?
singletonObjects <ConCurrentHashMap<>> 一级缓存
singletonFactories <HashMap<>> 三级缓存
earlySingletonObjects <HashMap<>> 二级缓存
二、分析步骤
1.循环依赖示例:
@Service
public class AService {
private BService bService;
public AService() {
System.out.println("Aservice 构造方法执行---------");
}
public BService getbService() {
return bService;
}
public void setbService(BService bService) {
this.bService = bService;
}
}
@Service
public class BService {
private AService aService;
public BService() {
System.out.println("bService 构造方法--------");
}
public AService getaService() {
return aService;
}
public void setaService(AService aService) {
this.aService = aService;
}
}
当容器初始化加载两个bean时,会造成A,B相互依赖,查看bean生命周期,可以追踪