spring的三级缓存

spring的三级缓存:

Spring 容器的“三级缓存”

Spring 容器的整个生命周期中,单例Bean对象是唯一的。即可以使用缓存来加速访问

Spring 源码中使用了大量的 Cache 手段,其中在循环依赖问题的解决过程中就使用了“三级缓存”

三级缓存的意义

singletonObject:一级缓存,存放完全实例化且属性赋值完成的 Bean ,可以直接使用
earlySingletonObject:二级缓存,存放早期 Bean 的引用,尚未装配属性的 Bean
singletonFactories:三级缓存,存放实例化完成的 Bean 工厂

除了三级缓存,还有另外两个缓存

singletonsCurrentlyInCreation: bean 在创建的过程中都会存储在此,创建完成移出
alreadyCreated:存放至少被创建一次的 bean,不会重复。即标记 bean 是否创建完成

原文链接:https://blog.csdn.net/weixin_44181671/article/details/108630950

对于Spring循环依赖的情况总结如下:

不能解决的情况:

  1. 构造器注入循环依赖
  2. prototype field属性注入循环依赖

能解决的情况

  1. field属性注入(setter方法注入)循环依赖

spring ioc 内部的三级缓存保证了它不会出现循环依赖问题。为什么呢?
https://blog.csdn.net/weixin_44181671/article/details/108630950

但最后循环依赖最终是设计层面的问题,应该从设计层面来避免它,以免后续系统难以维护。

文章整理自互联网,只做测试使用。发布者:Lomu,转转请注明出处:https://www.it1024doc.com/5411.html

(0)
LomuLomu
上一篇 2025 年 1 月 6 日 下午3:44
下一篇 2025 年 1 月 6 日

相关推荐

  • chrome浏览器如何设置默认的搜索引擎

    前言 大家好,我是小徐啊。chrome浏览器是我们常用的浏览器,在我们开发java应用的时候,是不可或缺的。而我们开发中,经常会遇到各种各样的问题,这个时候就需要去搜索。其实,在chrome浏览器中,是可以直接在地址栏中输入关键词进行搜索的,且可以支持设置搜索引擎的,今天小徐就来介绍下。文末附获取方式。 打开chrome浏览器设置界面 首先,在浏览器的界面上…

    2024 年 12 月 30 日
    29900
  • NLP 中文拼写检测纠正论文-07-NLPTEA-2020中文语法错误诊断共享任务概述

    拼写纠正系列 NLP 中文拼写检测实现思路 NLP 中文拼写检测纠正算法整理 NLP 英文拼写算法,如果提升 100W 倍的性能? NLP 中文拼写检测纠正 Paper java 实现中英文拼写检查和错误纠正?可我只会写 CRUD 啊! 一个提升英文单词拼写检测性能 1000 倍的算法? 单词拼写纠正-03-leetcode edit-distance 72…

    未分类 2025 年 1 月 7 日
    12800
  • 数据密集型应用系统设计PDF、EPUB免费下载

    适读人群 :所有后端开发者 英国剑桥大学分布式系统研究员力作,微软CTO联袂力荐,EMC资深架构师亲译。带你跨越从分布式理论到工程实践的鸿沟! 电子版仅供预览,支持正版,喜欢的请购买正版书籍 点击原文去下载 书籍信息 作者: Martin Kleppmann出版社: 中国电力出版社原作名: Designing Data-Intensive Applicati…

    2025 年 1 月 15 日
    37900
  • 《深入理解Mybatis原理》MyBatis事务管理机制

    概述 对数据库的事务而言,应该具有以下几点:创建(create)、提交(commit)、回滚(rollback)、关闭(close)。对应地,MyBatis将事务抽象成了Transaction接口: MyBatis的事务管理分为两种形式: 使用JDBC的事务管理机制 :即利用java.sql.Connection对象完成对事务的提交(commit())、回滚…

    2025 年 1 月 14 日
    27700
  • Java与MySQL数据库交互实战指南

    Java开发中的MySQL数据库操作实践 在当今软件开发领域,数据库扮演着至关重要的角色。作为主流的编程语言之一,Java为数据库操作提供了强大的支持。本指南将全面讲解如何使用Java程序连接MySQL数据库,并完成常见的数据操作任务。 一、前期准备工作 1.1 MySQL环境搭建 首先需要确保本地已安装MySQL数据库服务端。建议从MySQL官方网站获取最…

    未分类 2025 年 5 月 19 日
    7100

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

联系我们

400-800-8888

在线咨询: QQ交谈

邮件:admin@example.com

工作时间:周一至周五,9:30-18:30,节假日休息

关注微信