spring面试:二、bean的生命周期和循环引入问题(三级缓存、@Lazy)

bean的生命周期

Spring容器在进行实例化时,会将xml配置的的信息封装成一个BeanDefinition对象,Spring根据BeanDefinition来创建Bean对象,里面有很多的属性用来描述Bean。
其中比较重要的是:

  • beanClassName:bean 的类名
  • initMethodName:初始化方法名称
  • properryValues:bean 的属性值
  • scope:作用域
  • lazyInit:延迟初始化
    在这里插入图片描述
    在这里插入图片描述

循环引入

建议去看https://www.bilibili.com/video/BV1yT411H7YK?p=40

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

解决方案

如果是set注入引起的循环依赖,spring提供的三级缓存大部分都可以解决。
如果是构造方法中就存在循环依赖,那么用@Lazy解决。

三级缓存

在这里插入图片描述

若只有一级缓存

在这里插入图片描述

二级缓存作用

在这里插入图片描述
但是二级缓存无法处理代理对象,因此有了三级缓存的存在。

二级缓存最核心的作用是,通过A的对象工厂创建代理对象,如果是多例的话,就会创建多个。直接把他们都放到二级缓存中方便管理且每次需要的话直接从里面拿就好了

三级缓存

在这里插入图片描述

源码(个人学习存档用)

//单实例对象注册器
public class DefaultSingletonBeanRegistry extends SimpleAliasRegistry implements SingletonBeanRegistry {
    private static final int SUPPRESSED_EXCEPTIONS_LIMIT = 100;
    private final Map<String, Object> singletonObjects = new ConcurrentHashMap(256);
    private final Map<String, ObjectFactory<?>> singletonFactories = new HashMap(16);
    private final Map<String, Object> earlySingletonObjects = new ConcurrentHashMap(16);
}

@Lazy

在这里插入图片描述

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

救命~这件国风旗袍女儿穿也太好看了吧

这款中式提花改良版旗袍 一眼就戳中了我的心巴 整件精美刺绣好看不大众 两侧网纱的加持增添仙气缥缈感 穿上厚实不显臃肿 袖口处拼接毛毛徒增可爱俏皮的感觉 穿上过年过节满满的焦点呀~

Logstash访问安全访问Elasticsearch集群

生成logstash证书: opensal pkcs12 -in elastic-stack-ca.p12 -clcerts -nokeys > logafash.cer openssl x509 -in logstash.cer -out logstash.pem 编排配置文件

Elasticsearch:使用 OpenAI 生成嵌入并进行向量搜索 - nodejs

在我之前的文章&#xff1a; Elasticsearch&#xff1a;使用 Open AI 和 Langchain 的 RAG - Retrieval Augmented Generation &#xff08;一&#xff09;&#xff08;二&#xff09;&#xff08;三&#xff09;&#xff08;四&#xff09;​​​​​ 我详细地描述了如何使用…

【C++11特性篇】盘点C++11中三种简化声明的方式【auto】【decltype】【nullptr】(3)

前言 大家好吖&#xff0c;欢迎来到 YY 滴C系列 &#xff0c;热烈欢迎&#xff01; 本章主要内容面向接触过C的老铁 主要内容含&#xff1a; 欢迎订阅 YY滴C专栏&#xff01;更多干货持续更新&#xff01;以下是传送门&#xff01; 目录 一.auto&#xff06;范围for二.decltyp…

LVS负载均衡群集 DR模式

目录 1.LVS LVS调度器用的调度方法 固定调度算法 动态调度算法 LVS的工作模式及其工作过程 1、NAT模式&#xff08;VS-NAT&#xff09; 2、直接路由模式&#xff08;VS-DR&#xff09; 3、IP隧道模式&#xff08;VS-TUN&#xff09; 2.DR模式LVS负载均衡群集 LVS-DR模…

掌握Guava字符处理工具:让你的代码更易读、高效

推荐语 请允许我自夸一下&#xff0c;这确实是一篇精彩的技术文章&#xff0c;它深入介绍了Guava类库中强大的字符串处理工具。通过本文&#xff0c;你将了解如何巧妙运用这些工具来简化字符串操作、提高代码可读性和性能。不论是字符串拼接、分割、替换还是正则表达式匹配&am…

IT 人员与加密程序:如何战胜病毒

&#x1f510; 加密程序是攻击者在成功攻击组织时使用最多的恶意软件类型。它们通常会发送到一个庞大的电子邮件地址数据库&#xff0c;看起来像 Word 或 Excel 文档或 PDF 文件。 想象一下&#xff0c;你是会计部门的一名员工。这种格式的文件在电子文档管理系统中被广泛使用…

心理测试网站源码,知己心理React心理健康测试

源码介绍 React心理健康测试网站源码&#xff0c;帮助需要的人更好地了解自已的心理健康状态和人格特征。 React可以在Vite中启用HMR&#xff0c;并且包含了几人EsLint规则。只需要使用react antd-mobile即可 轻松部署完成。

美团赚钱更难了,Q3核心业务利润率下降2%,市值一年缩水近6000亿

从“买菜”卷向“超市”&#xff0c;成立5年的美团买菜更名为“小象超市”。 就在更名公告发布的前一天&#xff0c;美团公布了2023年三季报&#xff0c;尽管三季度营收净利双增长&#xff0c;但其股价却呈相反趋势。 三季报发布次日(11月29日)&#xff0c;美团港股股价单日跌…

离线云渲染有什么好用的平台?离线云渲染好用吗?

云渲染是一种在云端计算平台上执行的3D渲染任务处理方式&#xff0c;让CG制作者不必依靠本地硬件的计算力。它与传统的离线渲染有着相似之处——都不需要即时生成渲染结果&#xff0c;并且可能需要等待一段时间才能获取最终图像。不过&#xff0c;云渲染利用了云计算提供的分布…

外包干了3年,技术退步明显。。。

前言 简单说下我的情况吧&#xff01;普通本科的科班生&#xff0c;19年的时候通过校招进了一家小自研&#xff0c;工资还凑合&#xff0c;在里面带了一年多&#xff0c;公司没了&#xff0c;疫情期间找工作很麻烦&#xff0c;后面就开始自己近3年的外包生涯&#xff0c;这三年…

讯飞星火大模型api调用

讯飞星火大模型&#xff0c;通过websocket方式通信传递协议要求的报文&#xff0c;然后将流式返回的报文拼接为完整的响应内容&#xff0c;status2时是最后一条消息。因为是websocket方式所以是异步响应的&#xff0c;如果想要同步需要使用CountDownLatch控制下线程等待最后一条…

57.Go操作ES(官方提供github.com/elastic/go-elasticsearch库)

文章目录 一、简介1、安装依赖2、导入依赖3、连接 ES 二、操作索引三、model定义四、操作文档1、创建文档2、根据文档唯一ID获取指定索引下的文档3、检索 document1、 检索全部文档2、 模糊条件检索3、聚合检索 4、更新文档5、删除文档6、文档操作完整代码 代码地址&#xff1a…

数据结构与算法之美学习笔记:36 | AC自动机:如何用多模式串匹配实现敏感词过滤功能?

目录 前言基于单模式串和 Trie 树实现的敏感词过滤经典的多模式串匹配算法&#xff1a;AC 自动机解答开篇内容小结 前言 本节课程思维导图&#xff1a; 很多支持用户发表文本内容的网站&#xff0c;比如 BBS&#xff0c;大都会有敏感词过滤功能&#xff0c;用来过滤掉用户输入…

论文阅读:PointCLIP V2: Prompting CLIP and GPT for Powerful3D Open-world Learning

https://arxiv.org/abs/2211.11682 0 Abstract 大规模的预训练模型在视觉和语言任务的开放世界中都表现出了良好的表现。然而&#xff0c;它们在三维点云上的传输能力仍然有限&#xff0c;仅局限于分类任务。在本文中&#xff0c;我们首先协作CLIP和GPT成为一个统一的3D开放世…

使用 TensorFlow 创建生产级机器学习模型(基于数据流编程的符号数学系统)——学习笔记

资源出处&#xff1a;初学者的 TensorFlow 2.0 教程 | TensorFlow Core (google.cn) 前言 对于新框架的学习&#xff0c;阅读官方文档是一种非常有效的方法。官方文档通常提供了关于框架的详细信息、使用方法和示例代码&#xff0c;可以帮助你快速了解和掌握框架的使用。 如…

关于 Redis 与传统关系型数据库的选择

当需要为你的应用程序选择合适的数据库时&#xff0c;选择何种数据库通常取决于你项目的特定要求。Redis 是一种高性能的内存数据存储&#xff0c;而 MySQL 等传统关系型数据库也各自具有自己的优势和劣势。在本期文章中&#xff0c;我们将探讨在 Redis 和传统关系型数据库之间…

C++面向对象(OOP)编程-运算符重载

本文主要介绍C面向对象编程中的多态的手段之一运算符重载&#xff0c;讲清运算符重载的本质&#xff0c;以及通过代码实现一些常用的运算符重载。 目录 1 运算符重载的本质 2 运算符重载格式 3 运算符重载分类 3.1 重载为类的成员函数 3.1.1 双目运算符重载 3.1.2 单目运…

Faulhaber 2.5代运动控制系统 25mNm/13W

2.5代控制系统&#xff1b; PWM输出&#xff1b; 四象限控制带&#xff1b; RS232或CANopen通信接口&#xff1b; 2250_BX4_CxD 选件&#xff0c;电缆和连接信息&#xff1a; 适配部件&#xff1a;

Java-File类与IO流(1)

我是南城余&#xff01;阿里云开发者平台专家博士证书获得者&#xff01; 欢迎关注我的博客&#xff01;一同成长&#xff01; 一名从事运维开发的worker&#xff0c;记录分享学习。 专注于AI&#xff0c;运维开发&#xff0c;windows Linux 系统领域的分享&#xff01; 本…