spring三级缓存都放什么东西

fiy 其他 39

回复

共3条回复 我来回复
  • fiy的头像
    fiy
    Worktile&PingCode市场小伙伴
    评论

    Spring框架中的三级缓存是指用于存储Bean对象的缓存机制,主要用于提高Bean的创建性能。三级缓存分为singletonObjects、earlySingletonObjects和singletonFactories。

    1. singletonObjects:这是Spring框架的第一级缓存,用于存储已经完成实例化的单例Bean对象。当需要获取一个单例Bean对象时,Spring会首先在singletonObjects中查找,如果找到则直接返回,如果没有找到则进入下一级缓存。

    2. earlySingletonObjects:这是Spring框架的第二级缓存,用于存储已经进行了实例化但还未完成初始化的单例Bean对象。在创建单例Bean的过程中,如果发现有循环依赖的情况,会将尚未初始化的Bean对象暂存于earlySingletonObjects中,以便后续处理循环依赖。

    3. singletonFactories:这是Spring框架的第三级缓存,用于存储用于创建单例Bean的工厂对象。在创建单例Bean的过程中,如果发现有循环依赖的情况,会将创建Bean所需要的工厂对象暂存于singletonFactories中,以便后续处理循环依赖。

    需要注意的是,三级缓存都是在Spring容器启动时创建的,它们都属于Spring的内部数据结构,并不对外暴露。这些缓存主要是为了提高Bean的创建性能和解决循环依赖的问题,对于开发者而言,并不需要直接操作这些缓存。

    1年前 0条评论
  • 不及物动词的头像
    不及物动词
    这个人很懒,什么都没有留下~
    评论

    Spring框架中的三级缓存用于管理和缓存 bean 实例。这三级缓存分别是 singletonObjects、earlySingletonObjects 和 singletonFactories。每个缓存都存储了不同阶段的 bean 实例。

    1. singletonObjects:这是最终的缓存,用于存储完全初始化和准备就绪的 bean 实例。在从容器中获取 bean 时,如果缓存中存在该 bean,则直接返回。singletonObjects 缓存是单例模式下最终的 bean
    1年前 0条评论
  • worktile的头像
    worktile
    Worktile官方账号
    评论

    Spring框架使用三级缓存来管理Bean对象的创建和销毁过程。三级缓存是在Bean的创建过程中使用的,它们分别是singletonObjects、earlySingletonObjects和singletonFactories。

    1. singletonObjects:该缓存存储已经完全创建的Bean对象实例。当Bean对象创建完成后,会将其添加到该缓存中,以备后续的Bean依赖注入和其他操作使用。

    2. earlySingletonObjects:该缓存存储已经被实例化但尚未完成依赖注入的Bean对象实例。当Bean对象正在初始化过程中,如果有其他Bean对象依赖于它,则该被依赖的Bean实例会被添加到该缓存中,以便在依赖注入完成后继续使用。

    3. singletonFactories:该缓存存储Bean对象的工厂实例。在Spring框架中,Bean对象的创建通常由FactoryBean来完成。在Bean对象创建的过程中,如果Bean对象是通过FactoryBean创建的,那么该FactoryBean实例会被添加到singletonFactories缓存中。

    以下是Spring三级缓存的操作流程:

    1. 首先,当一个Bean被请求时,Spring框架会首先从singletonObjects缓存中查找是否已经存在该Bean对象的实例,如果存在,则直接返回。

    2. 如果singletonObjects缓存中不存在该Bean对象实例,则继续检查earlySingletonObjects缓存中是否存在。如果存在,则说明该Bean对象正在创建过程中,并且可能存在循环依赖关系。在这种情况下,Spring将返回earlySingletonObjects缓存中的实例。

    3. 如果既不存在singletonObjects缓存中,也不存在earlySingletonObjects缓存中,那么Spring将继续检查singletonFactories缓存中是否存在该Bean对象的工厂实例。

    4. 如果存在工厂实例,则使用工厂对象创建Bean对象,并将创建好的Bean对象实例存储到singletonObjects缓存中,同时从singletonFactories缓存中移除工厂实例。

    5. 如果以上缓存都没有命中,则创建一个新的Bean对象实例,并将其存储到singletonObjects缓存中。

    6. 在Bean对象创建过程中,如果发生了循环依赖关系,Spring会根据优先级(三级缓存的顺序)依次从相关缓存中获取Bean的实例。

    总结:Spring框架的三级缓存是为了支持Bean对象的循环依赖关系,优化Bean对象的创建和管理过程。通过使用三级缓存,Spring可以在Bean对象创建过程中解决循环依赖问题,并提高Bean对象的创建效率。

    1年前 0条评论
注册PingCode 在线客服
站长微信
站长微信
电话联系

400-800-1024

工作日9:30-21:00在线

分享本页
返回顶部