目录
- springboot相互依赖 server相互引用
- spring解决相互依赖的问题
- 构造器循环依赖
- setter循环依赖
- field属性注入循环依赖(prototype)
- 小结一下
springboot相互依赖 server相互引用
public class RoleService{
@Autowired @Lazy
private UserServer userServer;
}
public class UserService{
@Autowired @Lazy
private RoleService roleService;
}
spring解决相互依赖的问题
构造器循环依赖
@Service
public class A {
public A(B b) { }
}
@Service
public class B {
public C (C c) { }
}
@Service
public class C {
public A (A a) { }
}
通过构造器注入构成的循环依赖,此依赖是无法解决的,只能抛出BeanCurrentlyInCreationException异常表示循环依赖

描述:创建A类是,构造器需要B类,那将去创建B,在创建B时又发现需要A类,则又去创建C类,最终在创建C时发现又需要A,从而形成一个环,没办法创建。
原理:Spring容器将每一个正在创建的bean标识符放在一个“当前创建bean池”中,bean标识符创建过程中将一直保持在这个池中,因为如果在创建bean过程中发现自己已经在“当前创建bean池”中时,将会抛出BeanCurrentlyInCreationException异常表示循环依赖;而对于创建完毕的bean将从“当前创建bean池”中清除掉。
setter循环依赖
@Service
public class A1 {
@Autowired
private B1 b1; }
@Service
public class B1 {
@Autowired
public C1 c1;
}
@Service
public class C1 {
@Autowired
public A1 a1;
}
通过setter注入方式构成的循环依赖。
原理:对于setter注入造成的依赖是通过Spring容器提前暴露刚完成构造器注入但未完成其他步骤(比如setter注入)的bean来完成的,而且只能解决单例作用域的bean循环依赖。
field属性注入循环依赖(prototype)
@Service @Scope("prototype") public class A1 {
@Autowired
private B1 b1; }
@Service @Scope("prototype")
public class B1 {
@Autowired
public C1 c1; }
@Service @Scope("prototype") public class C1 {
@Autowired
public A1 a1; }
报错
小结一下
Spring只能解决Setter方法注入的单例bean之间的循环依赖
ClassA依赖ClassB,ClassB又依赖ClassA,形成依赖闭环。Spring在获取ClassA的实例时,不等ClassA完成创建就将其曝光加入正在创建的bean缓存中。在解析ClassA的属性时,又发现依赖于ClassB,再次去获取
ClassB,当解析ClassB的属性时,又发现需要ClassA的属性,但此时的ClassA已经被提前曝光加入了正在创建的bean的缓存中,则无需创建新的的ClassA的实例,直接从缓存中获取即可。从而解决循环依赖问题。
以上为个人经验,希望能给大家一个参考,也希望大家多多支持。
相关推荐:
SEO优化如何进行:提升网站排名,轻松超越竞争对手,ai写作怎么操作手机
什么是seo网站推广,什么是seo网站推广 ,ai酷男人
seo资源指的是什么,seo资料 ,绿眼AI
SEO对策:提升网站排名与流量的必备策略,SEO入门相机平价学生
SEO这样做,轻松引爆流量,助力企业成长,无极标准网站优化好处
SEO基础知识解析:如何提升网站排名,助力企业成长,毕节企业建设网站
360排名优化价格:打造高效网络营销的制胜法宝,ai换脸刘浩存自wei
优化*:打造更加高效、创新的娱乐体验,石排网站建设制作多少钱
SEO重要性与企业互联网发展的必由之路,互联网营销推广平台设计
seo需要什么人才,seo需要做什么工作 ,探索ai照片
互联网资源的无限潜力:如何利用数字世界为个人和企业创造价值,信阳网站建设正规公司
AI网页版智能问答,开启智慧沟通新时代,ai梦境档案用不了手柄
seo灰帽是什么,灰帽是指什么 ,ai绘画六边形
如何用AI改文章,让写作更高效、精准,提升内容质量
SEO出超:如何通过精准优化实现网站流量大爆发,营销推广方式联系f火15星
ChatGPT打开后空白:如何解决这个困扰并高效使用AI助手,ai四声怎么写
优化百:开启数字时代的智能营销新时代,湘潭seo优化报价表
SEO找词:如何精准找到高效关键词,提升排名和流量,河源网站优化平台
ChatGPT在处理文本时可能无法完全理解上下文的复杂性,肌肉ai
seo需要什么人员,seo需要什么技能 ,画大学ai
优化分析:提升企业效益的关键策略,山东大网站建设
“多网建站”助力企业跨越发展,开启全新数字化时代,海南网站优化电池
ChatGPT怎么打开不了?全方位解决方案!,大庆ai
云推SEO:让您的网站在激烈竞争中脱颖而出,网站优化公司欢迎来电
ChatGPT无法打开?这些解决办法让你重新畅享智能对话!,北大写作ai
SEO职位:数字营销的核心,开启职业新高峰,汕尾网站建设推广厂商
seo独立站是什么,独立站推广是什么 ,ai曲线笔刷扩展
ChatGPT4网页空白:重新定义智能交互的未来,怎么登ai
ChatGPT打不开网页?看完这篇你就懂了!,国内ai写作安卓软件
ChatGPT网页版内容显示不全的原因与解决方案,ai超级绘
SEO用户:如何为您的网站带来持续流量和转化,惠州网站推广哪个好
SEO获取流量的必杀技:如何通过优化轻松提升网站排名,德州全网营销推广价格
ChatGPT连了外网也登不了?如何解决这一问题,重新畅享AI助力!,ai少女大瓜
优化提长:让企业效能提升的秘密武器,长沙网站建设创意
SEO结构优化:助力网站提升排名与流量的关键策略,杭州小网站推广哪家好做
ChatGPT发生故障,背后隐藏着哪些不为人知的原因与挑战?,硬件ai和软件ai
用AI创作的文章算原创吗?深度背后的逻辑与意义
seo用什么写属性写,seo属于什么 ,芭田科学施肥AI
ChatGPT免费订阅的使用限制:其潜力与挑战,ai辅助线无法对齐画板
seo需要什么器械,seo需要什么器械才能做 ,长续航ai纯电汽车
ChatGPT翻译打不开?解决方法!,ai爱股票
AI网页版本:开启智能时代的新篇章,拼音标调ai
seo要懂些什么,seo主要做什么的 ,小艾艾AI
AI热门软件,未来科技的钥匙
ChatGPT登录503错误?轻松解决,快速恢复畅享智能体验!,ai怎么加植物材质效果
好用的AI写作软件,让创作更高效
seo辅助词选什么,seo助手 ,各车企ai
SEO优化与SEM广告:提升品牌曝光与流量的双重利器,ai接回头
seo网站是什么找行者SEO,seo分析网站 ,ai图文梅花
ChatGPT不能访问,我的学术水平直线下降,泰州大数据ai艾灸价格