首页 > 其他分享 >Spring怎么解决循环依赖?

Spring怎么解决循环依赖?

时间:2024-11-23 12:33:28浏览次数:6  
标签:依赖 对象 Spring ObjectFactory System 循环 public out

看了大佬的资料,自己写一篇,当个笔记。

如有侵权,就会删除。

目录:

  • 什么是循环依赖?

  • Spring如何解决循环依赖?

1、什么是循环依赖?

简单的来说就是A依赖B的同时,B依赖A。在创建A对象的同时需要使用的B对象,在创建B对象的同时需要使用到A对象。

点击查看代码
@service
public class ServiceImplA {

    public ServiceImplA (){
        System.out.println("A的构造方法执行了...");
    }

    private B b;

    @Autowired
    public void setServiceImplB (B b) {
        this.b = b;
        System.out.println("给A注入B");
    }
}
@service
public class ServiceImplB {

    public ServiceImplB (){
        System.out.println("B的构造方法执行了...");
    }

    private A a;

    @Autowired
    public void setServiceImplB (A a) {
        this.a = a;
        System.out.println("给B注入了A");
    }

}

2、Spring如何解决循环依赖?

步骤:

1、实例化A,生成A的ObjectFactory对象

2、A的ObjectFactory对象存到三级缓存

3、需注入B,但没有B

4、实例化B,生成B的ObjectFactory对象,并且存到三级缓存

5、需要注入A,

6、通A的ObjectFactory对象创建A的代理对象

7、A代理对象存到二级缓存,删除A的ObjectFactory对象

8、A注入B,B执行生命周期,B生成

9、B存到一级缓存,删除B的ObjectFactory对象

10、B注入到A,A执行生命周期,A生成

资料来源:https://www.yuque.com/yp000/osbag7/pqtbqz

标签:依赖,对象,Spring,ObjectFactory,System,循环,public,out
From: https://www.cnblogs.com/sssjc/p/18564312

相关文章

  • 计算机毕业设计源码 springboot《云上厨房》微信小程序
    标题:springboot《云上厨房》微信小程序设计和实现一个基于SpringBoot的《云上厨房》微信小程序,旨在为用户提供便捷的烹饪指南、菜谱推荐和食材采购服务。以下是该小程序的主要功能模块:1.用户注册与登录•微信登录:用户可以通过微信授权登录,简化注册流程。•用户信息:用户可......
  • 企业OA管理系统:Spring Boot技术架构与应用
    3系统分析3.1可行性分析通过对本企业OA管理系统实行的目的初步调查和分析,提出可行性方案并对其一一进行论证。我们在这里主要从技术可行性、经济可行性、操作可行性等方面进行分析。3.1.1技术可行性本企业OA管理系统采用SSM框架,JAVA作为开发语言,是基于WEB平台的B/S架构......
  • Spring Boot OA:企业数字化转型的利器
    3系统分析3.1可行性分析通过对本企业OA管理系统实行的目的初步调查和分析,提出可行性方案并对其一一进行论证。我们在这里主要从技术可行性、经济可行性、操作可行性等方面进行分析。3.1.1技术可行性本企业OA管理系统采用SSM框架,JAVA作为开发语言,是基于WEB平台的B/S架构......
  • 基于SpringBoot的学生行为与学习成绩分析系统设计与实现(源码+开发+讲解)学生行为与学习
    博主介绍:  ✌我是阿龙,一名专注于Java技术领域的程序员,全网拥有10W+粉丝。作为CSDN特邀作者、博客专家、新星计划导师,我在计算机毕业设计开发方面积累了丰富的经验。同时,我也是掘金、华为云、阿里云、InfoQ等平台的优质作者。通过长期分享和实战指导,我致力于帮助更多学生......
  • #渗透测试#SRC漏洞挖掘#网络运维# 黑客脚本编写06之if条件判断与for循环判断
    免责声明本教程仅为合法的教学目的而准备,严禁用于任何形式的违法犯罪活动及其他商业行为,在使用本教程前,您应确保该行为符合当地的法律法规,继续阅读即表示您需自行承担所有操作的后果,如有异议,请立即停止本文章阅读。                            ......
  • #渗透测试#SRC漏洞挖掘#网络运维# 黑客脚本编写07之for循环判断与while循环
    免责声明本教程仅为合法的教学目的而准备,严禁用于任何形式的违法犯罪活动及其他商业行为,在使用本教程前,您应确保该行为符合当地的法律法规,继续阅读即表示您需自行承担所有操作的后果,如有异议,请立即停止本文章阅读。                            ......
  • 构建企业级OA系统:Spring Boot实战指南
    1系统概述1.1研究背景随着计算机技术的发展以及计算机网络的逐渐普及,互联网成为人们查找信息的重要场所,二十一世纪是信息的时代,所以信息的管理显得特别重要。因此,使用计算机来管理企业OA管理系统的相关信息成为必然。开发合适的企业OA管理系统,可以方便管理人员对企业OA管......
  • Spring事务——针对实习面试
    目录Spring事务事务的基本概念Spring管理事务的方式有几种?Spring事务中有哪几种事务传播行为?Spring事务中的隔离级别有哪几种?Spring事务如何回滚的?@Transactional注解有什么用?Spring事务事务的基本概念在Spring框架中,事务的基本概念主要围绕以下几个核心概念:事......
  • SpringBoot 自习室预约小程序 毕业设计源码46365
                                       目 录摘要1绪论1.1选题背景与意义1.2国内外研究现状1.3论文结构与章节安排2 开发环境及相关技术介绍2.1微信开发者工具2.2 MySQL数据库......
  • 基于SpringBoot+MySQL+SSM+Vue.js的宠物猫售卖管理
    获取见最下方名片获取见最下方名片获取见最下方名片演示视频基于SpringBoot+MySQL+SSM+Vue.js的宠物猫售卖管理技术描述开发工具:Idea/Eclipse数据库:MySQLJar包仓库:Maven前端框架:Vue/ElementUI后端框架:Spring+SpringMVC+Mybatis+SpringBoot文字描述基......