请教,关于 springboot 循环依赖的问题

请教,关于 springboot 循环依赖的问题,第1张

请教,关于 springboot 循环依赖的问题,第2张

我记得之前 spring 如果使用 Autowired 注解注入成员变量的话,是会启动的时候抛错提示创建 bean 失败的,但是我刚测了一下 2.3.3 版本下如果 A 注入 B,B 注入 A 是不会引起这个错误的,我也并没有使用延迟加载,这是新版本的特性吗,还是我测试的姿势不对 ----------------------- 以下是精选回复-----------------------

答:不会报错吗?
答:scope 如果是 Singleton 循环依赖不会保存的 如果是 prototype 就会报错
答:不是 spring-boot,是 spring
循环依赖的情况,字段注入和 setter 注入可以正常工作,构造器注入无法工作
答:楼上正解
答:默认是单例啊,单例是不存在循环依赖问题的。

创建一个 Bean 分为创建 对象实例,注入属性两部分。

创建对象实例是没限制的,随便 new,问题在于第二步。

spring 用了缓存来解决的。

----------------------------------------------------------

1. 当创建 A 以后,会把 A 放入缓存中,然后往 A 注入 B [此时 A 创建成功,但是还没把 B 注入进来] ,

2. 往 A 注入 B 的是时候 需要 B 的实例,它会先去缓存获取 B,发现 B 不存在就会创建一个 B [此时 B 还只是创建成功,并没把 A 注入进来]

3. B 创建完以后,要往 B 注入 A,同样需要 A 的实例,所以先去缓存获取 A,发现缓存中存在 A (因为第一步已经建好了), 就会从缓存中取出来然后注入到 B,并把 B 放入缓存 [此时 B 变成了一个被注入了的完成对象] ,

4. 将 B 注入到 A [此时 A 变成了一个被注入了的完整对象]

5. 以上就是 spring 解决单例模式下的循环依赖问题

DABAN RP主题是一个优秀的主题,极致后台体验,无插件,集成会员系统
网站模板库 » 请教,关于 springboot 循环依赖的问题

0条评论

发表评论

提供最优质的资源集合

立即查看 了解详情