Spring三级缓存

Spring三级缓存是Spring框架为了解决循环依赖问题而引入的一种机制。在Spring的单例Bean创建过程中,Spring IoC容器使用三级缓存来确保即使存在循环依赖,也能正确地初始化Bean。

1. 一级缓存(SingletonObjects):
   这是最基本的缓存,用于存储完全初始化好的单例Bean。当Bean创建完成并且所有依赖都已经注入后,它会被放入这个缓存中。

2. 二级缓存(earlySingletonObjects):
   这个缓存用于存储早期暴露的对象。当Bean的实例被创建后,但依赖还没有全部注入之前,该Bean会被放入这个缓存。这样,如果其他Bean在创建过程中尝试获取这个Bean的引用,Spring可以从这个缓存中提供一个早期的对象引用。

3. 三级缓存(singletonFactories):
   这是一个工厂对象的缓存。当Bean的实例被创建,但还没有放入二级缓存之前,Spring会创建一个工厂对象,该工厂对象能够生成这个Bean的实例。这个工厂对象会被放入三级缓存中。如果其他Bean在创建过程中需要这个Bean的引用,Spring会使用这个工厂对象来生成一个早期对象引用。

以下是Spring解决循环依赖的大致过程:

1. 当一个Bean A正在创建过程中,Spring会先为Bean A创建一个早期对象,并把这个对象的工厂放入三级缓存(singletonFactories)。

2. 如果此时Bean

相关推荐

  1. Spring三级缓存

    2024-04-23 16:06:03       60 阅读
  2. Spring依赖注入、循环依赖——三级缓存

    2024-04-23 16:06:03       37 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-04-23 16:06:03       98 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-04-23 16:06:03       106 阅读
  3. 在Django里面运行非项目文件

    2024-04-23 16:06:03       87 阅读
  4. Python语言-面向对象

    2024-04-23 16:06:03       96 阅读

热门阅读

  1. 第24篇 python基础

    2024-04-23 16:06:03       32 阅读
  2. 安装Python包常用的国内镜像源

    2024-04-23 16:06:03       30 阅读
  3. 宝塔手动安装grafana

    2024-04-23 16:06:03       30 阅读
  4. Flowable学习笔记一:初识Flowable

    2024-04-23 16:06:03       39 阅读
  5. GetManifestResourceStream用法

    2024-04-23 16:06:03       27 阅读
  6. MySQL数据库——18、事务

    2024-04-23 16:06:03       29 阅读
  7. AtomGit 体验

    2024-04-23 16:06:03       36 阅读
  8. Stable Diffusion 本地部署教程

    2024-04-23 16:06:03       32 阅读
  9. PySide6之QEasingCurve.Type

    2024-04-23 16:06:03       31 阅读
  10. Swift常用的第三方库

    2024-04-23 16:06:03       39 阅读
  11. 工作后的自我介绍

    2024-04-23 16:06:03       30 阅读