spring的循环依赖

2021-04-27  本文已影响0人  垂直居中的句号

当Aservice类里有Bservice,当Bservice类里有Aservice时,

创建a时,需要赋值b,创建b时需要赋值a。此时都没有创建完成,无法赋值。

解决方法:spring的三级缓存。

当A创建实例时形成一个原始对象,当有循环依赖时提前经过aop形成代理对象,放入map(二级缓存),判断a正在创建中,可以在创建之前加入一个createmap,创建之后移除。

创建b时先从单例池(一级缓存)取,没有从代理对象的map取,没有的话说明a正在创建中,从原始对象中取到形成代理对象。

当b,c,同时形成a的代理对象时,与A的单例冲突。于是当。。。.三级缓存还没听懂。。。。

上一篇 下一篇

猜你喜欢

热点阅读