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

sping怎么解决循环依赖

时间:2024-06-17 20:32:22浏览次数:10  
标签:初始化 缓存 创建 sping bean 依赖 三级 循环

  使用三级缓存解决循环依赖问题。

循环依赖指的是两个或者两个以上的bean在创建的时候相互依赖而导致出现死循环的情况无法成功创建bean。

spring中使用三级缓存解决循环依赖,这三级缓存都是由map组成的。其中第一层是用来存放已经创建好的bean对象,第二层是用来存放“半成品”的bean,第三层则是用来存放单例bean的创建工厂。

 

解决循环依赖的流程如下:假设有两个bean:A和B,且两个bean之间出现循环依赖。

当创建A的时候首先从三级缓存中循环A,发现A并没有在三级缓存中,此时就将A实例化分配内存地址,将A存放到第三层缓存中,准备初始化A。

在初始化A的时候发现需要注入B,此时就从三级缓存中寻找B,发现没有B,将B实例化并且放入到第三层缓存中,初始化B,B在初始化的时候需要注入A,于是从第三层缓存中的A单例bean的创建工厂创建出一个“半成品”A,放入到第二层缓存中,同时注入到B中,此时B初始化完成,放入到第一层缓存中。

接着继续初始化A,将第一层缓存中的B注入到A中,此时A初始化完成,将半成品A从第二层中删除,将创建好的A存放到第一层缓存中。至此A和B创建成功。

标签:初始化,缓存,创建,sping,bean,依赖,三级,循环
From: https://blog.csdn.net/m0_63739234/article/details/139753652

相关文章

  • c#中的值类型和引用类型在foreach循环和函数方法中作为参数的表现不同
    在C#中,数据类型分为两大类:值类型(ValueTypes)和引用类型(ReferenceTypes)。了解它们的区别和如何操作它们是理解C#内存管理的重要部分。值类型和引用类型的区别值类型(ValueTypes):值类型的变量直接存储它们的数据。常见的值类型包括所有的基本数据类型(如int,double,bo......
  • shell for循环时输出变量和变量值 变量的变量 判断路径是否存在
    前言全局说明shellfor循环时输出变量和变量值变量的变量一、说明二、打印变量和变量的内容2.1方式一用${!test}}文件名:t1.shtest_1="/home"test_2="/home/11"forpin"test_1""test_2"doecho"$p=${!p}"done执行结果:2.2方式二用evalte......
  • shell循环控制
    shell双层循环双层循环和循环语句的使用,while和until的语法使用echo打印echo-n表示不换行输出echo-e输出转义字符\b:相当于退格键(backspace)\n:换行,相当于回车键\f:换行,换行后的新行开头连着上一行的行尾\t:相当于tab键横向制表符echo-ne即不换行输出制表符#9......
  • shell脚本循环
    Shell脚本循环循环:循环是一种重复执行一段代码的结构。只要满足循环的条件,会一直执行这个代码。组成部分:循环条件、循环体循环条件:在一定范围之内,按照指定的次数来执行循环。循环体:在指定的次数内,执行的命令序列。只要条件满足,循环体会被一直执行。循环和遍历:遍历:就是......
  • 初学C语言——循环语句2
    switchswitch语句也是一种分支语句,常常用于多分支的情况switch语句,语法结构语法结构:switch(整形表达式){    语句项;语句项:是一些case语句如:    case整型常量表达式:            语句;}解释break,defaultbreak:1.在循环......
  • 初学C语言——循环语句1
    C语言是结构化的程序设计语言分为:顺序结构、选择结构(分支语句)、循环结构(循环语句)分支语句和循环语句分支语句有if语句和switch语句循环语句有while、for、do、while、do...while、goto语句什么是语句?C语言中有一个分号(;)隔开的就是一条语句如:    printf("......
  • Linux上java-jar Spingboot项目
    百度的,后面再补一个Linux文档操作手册,是不是很大胆?准备工作1、首先得有两个软件Xftp(用来上传文件到)和XShell(连接服务器执行命令)2、Linux上有JDK(怎么安装可以转到Linux安装JDK流程)3、项目的JAR包项目jar包导jar<build><plugins><plugin><groupId......
  • 开发一个python工具,pdf转图片,并且截成单个图片,然后修整没用的白边及循环遍历文件夹全
    今天推荐一键款本人开发的pdf转单张图片并截取没有用的白边工具一、开发背景:业务需要将一个pdf文件展示在前端显示,但是基于各种原因,放弃了h5使用插件展示原因有多个,文件资源太大加载太慢、pdf展示兼容性问题、pdf展示效果不好、pdf字体有时缺失等等,所以将项目中的协议等,全部由p......
  • 由于 react native svg 图表的依赖性问题,无法在 expo 上构建我的应用程序
    我最近制作了一个应用程序,并尝试为TestFlight构建该应用程序。在我的应用程序中,我开始使用react-native-svg-charts它使用react-native-svg.这些是我的package.json中的版本:"react-native-svg":"^15.3.0"、"react-native-svg-charts":"^5.4.0"、"react-n......
  • 第五章:循环结构
    一.理解:1.循环:通过某个条件,重复并且规律的执行一段代码2.循环组成部分:循环变量的初始化,循环条件,循环变量的改变,循环体3.循环分类:while循环,do....while循环,for循环二,while循环1语法://循环变量的初始化while(循环条件){//循环体//循环变量改变}2.执行原理:先执行循环变......