spring循环依赖的三种方式,关于spring循环依赖的说法错误的是
00-1010循环相关案例测试介绍
目录
说明
本文结合实例介绍了@Autowired解决循环依赖的原理。@Autowired通过L3缓存解决循环依赖。
除了@ autored,还有其他解决循环依赖的方法。请参阅:弹簧循环依赖的详细解决方案。
概述
@Autowired进行属性注入可以解决循环依赖。原理:Spring控制bean的生命周期,首先实例化bean,然后注入bean的属性。Spring记录了正在创建的bean(已经实例化但尚未初始化的bean),因此在注入属性时,可以从记录的bean中获取依赖对象。
相对来说,单独使用构造函数注入并不能解决循环依赖。因为依赖对象需要在构造时传入,所以不能实例化。(注意:构造函数注入可以用@Lazy解决循环依赖。实例化时传入代理对象,实际使用时会生成真实对象。)
00-1010代码
包com . example . tmp;导入org . spring framework . beans . factory . annotation . auto wired;导入org . spring framework . stereotype.component;@ component public class A { @ auto wired private B B;私有字符串name= Tony公共字符串getName(){ return name;} public void set name(String name){ this . name=name;}公共字符串getTest() { return b.getAge()。toString()名称;} }包com . example . tmp;导入org . spring framework . beans . factory . annotation . auto wired;导入org . spring framework . stereotype.component;@ component public class B { @ auto wired private A A;私人整数年龄=20;public Integer getAge(){ return age;} public void setAge(整数age){ this . age=age;} }包com . example . controller;导入com . example . tmp . a;导入org . spring framework . beans . factory . annotation . auto wired;导入org . spring framework . web . bind . annotation . get mapping;导入org . spring framework . web . bind . annotation . rest controller;@ RestControllerpublic class hello controller { @ auto wired private A A;@GetMapping(/test1 )公共字符串test1(){ return a . gettest();}}
00-1010 1.开始没有错误。
2 .邮递员访问:http://localhost:8080/test1
后端结果:没有报告错误。
邮递员结果: 20Tony
关于理解Spring循环依赖原理的这篇文章到此为止。关于Spring循环依赖的更多信息,请搜索Popular IT之前的文章或者继续浏览下面的相关文章。我希望你以后能更多地支持流行音乐!
郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。