springbean三级缓存
时间: 2023-09-14 12:12:18 浏览: 92
spring三级缓存解析
Spring框架中的Bean实例化过程中,涉及到三级缓存的概念。这三级缓存用于解决循环依赖的问题。
第一级缓存是singletonObjects,它是一个ConcurrentHashMap类型的缓存,用于存放完全初始化好的单例Bean。当Spring创建一个Bean时,会将其放入第一级缓存。
第二级缓存是earlySingletonObjects,它也是一个ConcurrentHashMap类型的缓存,用于存放提前曝光(尚未完全初始化)的单例Bean。在创建完Bean并且完成属性注入后,会将其放入第二级缓存。
第三级缓存是singletonFactories,它是一个ConcurrentHashMap类型的缓存,用于存放ObjectFactory,即获取Bean实例的方法。当从第二级缓存中获取不到Bean时,会调用ObjectFactory的getObject方法去创建Bean,并将其放入第三级缓存。
总的来说,三级缓存的作用是在Bean实例化过程中解决循环依赖问题。当出现循环依赖时,Spring会通过提前曝光尚未完全初始化的Bean来解决依赖关系,最终完成Bean的创建和初始化工作。
阅读全文