【笔记】Spring的循环依赖

Spring的循环依赖

在这里插入图片描述

在这里插入图片描述
ObjectFactory:函数式接口,可以将lambda表达式作为参数放在方法的实参种,在方法执行的时候,并不会实际的调用当前lambda表达式,只有在调用getObject方法的时候才回去调用lambda表达式
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

为什么spring要用三级缓存来解决循环依赖?

如果我们能保证所有的bean对象都不会被aop代理,那么二级缓存就能解决循环依赖问题,但是在spring中很多的bean都需要被代理。

spring的设计原则是在bean初始化完成才会创建代理对象,如果按照设计,那么就会出现一个问题:注入的对象和最终暴露的对象不是同一个对象,违背了单例的原则,所以需要将代理操作提前

使用二级缓存,可以满足解决循环依赖的问题,那么就意味着所有bean的创建代理的操作都要提前到实例化后初始化之前去创建代理对象,再将代理对象放入到二级缓存中,这次的操作是与设计相悖的;

那么何不在需要的时候再去创建代理对象呢,不需要的时候仍然在初始化后再创建代理对象呢,所以这个时候就引入了三级缓存,在三级缓存中放入ObjectFactory<?>,等需要的时候再去调用ObejctFactory.getObeject方法,该方法只会执行一次,就直接删除三级缓存保证了单例需求

默写
在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/240619.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

常用的百兆网络变压器与RJ45网口的参考连接电路有哪些,主要注意事项在哪里呢?

Hqst华轩盛(石门盈盛)电子导读&#xff1a;一起来了解常用的百兆网络变压器与RJ45网口的参考连接电路有哪些&#xff0c;主要注意事项在哪里呢&#xff1f; 第一,常用的百兆网络变压器与RJ45网口的参考连接电路 常用百兆网络变压器与网口连接器分开为独立电子元件的分离式参考电…

TrustZone之与非安全虚拟化交互

到目前为止&#xff0c;我们在示例中忽略了非安全状态中可能存在的虚拟化程序。当存在虚拟化程序时&#xff0c;虚拟机与安全状态之间的许多通信将通过虚拟化程序进行。 例如&#xff0c;在虚拟化环境中&#xff0c;SMC用于访问固件功能和可信服务。固件功能包括诸如电源管理之…

Ubuntu 常用命令之 top 命令用法介绍

&#x1f4d1;Linux/Ubuntu 常用命令归类整理 top命令是Linux下常用的性能分析工具&#xff0c;可以实时动态地查看系统中各个进程的资源占用状况&#xff0c;类似于Windows的任务管理器。它可以显示系统总的和分区的CPU使用率、内存使用率、交换区使用率、系统负载、进程数、…

MFC静态链接+libtiff静态链接提示LNK2005和LNK4098

编译报错 1>msvcrt.lib(ti_inst.obj) : error LNK2005: "private: __thiscall type_info::type_info(class type_info const &)" (??0type_infoAAEABV0Z) 已经在 libcmtd.lib(typinfo.obj) 中定义 1>msvcrt.lib(ti_inst.obj) : error LNK2005: "pr…

BUUCTF-Linux Labs

Linux Labs 根据题目给出的内容&#xff0c;在kali中连接靶机&#xff0c;输入密码进入命令行模式 ls发现什么都没有&#xff0c;有可能进入到了一个空文件夹 cd .. 切换到上一层目录&#xff0c;ls查看此目录下的内容&#xff0c;发现flag.txt文件&#xff0c;查看文件是flag …

超维空间S2无人机使用说明书——32、使用yolov7进行目标识别

引言&#xff1a;为了提高yolo识别的质量&#xff0c;提高了yolo的版本&#xff0c;改用yolov7进行物体识别&#xff0c;同时系统兼容了低版本的yolo&#xff0c;包括基于C的yolov3和yolov4&#xff0c;也有更高版本的yolov8。 简介&#xff0c;为了提高识别速度&#xff0c;系…

w15初识php基础

一、计算100之内的偶数之和 实现思路 所有的偶数除2都为0 代码实现 <?php # 记录100以内的偶数和 $number1; $num0; while($number<100){if($number%20){ $num$number;}$number1; } echo $num; ?>输出的结果 二、计算100之内的奇数之和 实现思路 所有的奇数除…

HTML+CSS做一个时尚柿子造型计时器

文章目录 💕效果展示💕代码展示HTMLJS💕效果展示 💕代码展示 HTML <!DOCTYPE html> <html lang

使用低代码工具构建电商平台:简化开发流程,加速应用搭建

在数字化时代&#xff0c;电商平台成为了各类企业的重要组成部分。然而&#xff0c;传统的软件开发过程往往漫长而复杂&#xff0c;需要大量的编码和调试工作。随着低代码工具的出现&#xff0c;开发者可以通过简化的方式来搭建电商平台应用&#xff0c;从而更快速地满足业务需…

surface pro重置win10后没微软账号如何登录

Surface pro官方镜像恢复详细图文步骤-CSDN博客 如果不懂重置系统请看上面的链接 win10-win11都开始默认要求输入微软账号才能使用。但依然有入口可以给没微软账号的用户使用的 第一步&#xff0c;重置后会要求连互联网&#xff0c;这一步要自己找个网络连接上&#xff0c;不…

十大经典排序算法(个人总结C语言版)

文章目录 一、前言二、对比1.排序算法相关概念1.1 时间复杂度1.2 空间复杂度1.3 排序方式1.4 稳定度 2.表格比较3.算法推荐3.1 小规模数据3.2 中等规模数据3.3 大规模数据3.4 特殊需求 三、排序算法1.冒泡排序&#xff08;Bubble Sort&#xff09;1.1 简介1.2 示例代码&#xf…

智能酒精壁炉在户外装饰中展现的独特魅力

智能酒精壁炉&#xff0c;一种独特的户外装饰和实用性产品&#xff0c;以其独有的魅力在户外场景中迅速赢得了人们的喜爱和欢迎。 在露营时&#xff0c;智能酒精壁炉由于便携性&#xff0c;可以很轻松地携带到露营地点。并且无需外接电源或气体&#xff0c;为露营者提供了简单而…

swing快速入门(二十五)

注释很详细&#xff0c;直接上代码 新增内容 1.ImageIO.write读取并显示图片 2.ImageIO.writeImageIO.write读取并保存图片 package swing21_30;import javax.imageio.ImageIO; import java.awt.*; import java.awt.event.WindowAdapter; import java.awt.event.WindowEvent…

使用web_video_server进行网页段的视频传输

引言&#xff1a;在项目中&#xff0c;需要实现无人机摄像头采集到的图像回传到window下进行查看&#xff0c;为此&#xff0c;选择使用web_video_server功能包实现局域网下的图像传输 硬件环境&#xff1a; 硬件&#xff1a;Jetson orin nano 8G D435摄像头 环境&#xff…

电子病历编辑器源码,提供电子病历在线制作、管理和使用的一体化电子病历解决方案

概述&#xff1a; 电子病历是指医务人员在医疗活动过程中,使用医疗机构信息系统生成的文字、符号、图表、图形、数据、影像等数字化信息,并能实现存储、管理、传输和重现的医疗记录,是病历的一种记录形式。 医院通过电子病历以电子化方式记录患者就诊的信息&#xff0c;包括&…

2024年pmp考试还有多久啊?怎么备考?

一般来说每年3、6、9、12月考试&#xff0c;一年四次&#xff0c;具体时间以官网通知为准。报考时间提前2个月报名&#xff0c;2023年的最后一次考试时间是11月&#xff0c;已经截止报名了。所以下一次考试就得等到2024年3月了。 想知道怎么备考先来分析一下现在的“新”考纲&…

进程同步与进程互斥-第二十四天

目录 前言 什么是进程同步 什么是进程互斥 四大区 遵循原则 本节思维导图 前言 进程具有异步性&#xff0c;异步性是指&#xff0c;各并发执行的进程以各自独立的、不可预知的速度向前推进&#xff0c;因此为了让进程以我们想要的顺序执行&#xff0c;操作系统引入了“进…

概率中的50个具有挑战性的问题[03/50]:轻率的陪审员

一、说明 我最近对与概率有关的问题产生了兴趣。我偶然读到了弗雷德里克莫斯特勒&#xff08;Frederick Mosteller&#xff09;的《概率论中的五十个具有挑战性的问题与解决方案》&#xff08;Fifty Challenge Problems in Probability with Solutions&#xff09;一书。我认为…

如何修复concrt140.dll丢失问题,分享4种有效的方法

在计算机使用的过程中&#xff0c;我们经常会遇到一些错误提示或者系统崩溃的情况。其中之一就是“concrt140.dll丢失”。这个错误通常会导致某些应用程序无法正常运行。为了解决这个问题&#xff0c;我们需要采取一些措施来修复丢失的concrt140.dll文件。本文将介绍五个解决co…

C++ 强制类型转换static_cast<typeName>

C允许通过强制类型转换机制显式地进行类型转换。强制类型转换的格式有两种。 如&#xff1a; 为将存储在变量nData中的int值转换为long类型&#xff0c;可以使用下面的表达式中的一种&#xff1a; (long)nData …