什么是Spring的三级缓存
时间: 2023-12-24 10:43:31 浏览: 85
在 Spring 框架中,Bean 的创建和管理是通过 BeanFactory 和 ApplicationContext 实现的。为了提高 Bean 的创建和查找效率,Spring 框架使用了三级缓存来缓存 Bean 的定义和实例化对象。
Spring 的三级缓存包括:
1. singletonObjects:单例对象缓存。当 Spring 创建一个单例 Bean 的时候,会首先从 singletonObjects 缓存中查找该 Bean 是否已经创建,如果已经创建,则直接返回 Bean 实例,否则创建一个新的 Bean 实例并加入缓存。
2. earlySingletonObjects:早期单例对象缓存。在 Spring 创建单例 Bean 的过程中,如果该 Bean 依赖其他的 Bean,那么 Spring 会先创建依赖的 Bean 并加入 earlySingletonObjects 缓存中,然后再创建当前 Bean,最后将当前 Bean 也加入 singletonObjects 缓存中。
3. singletonFactories:单例对象工厂缓存。当 Spring 创建单例 Bean 的时候,如果该 Bean 实现了 FactoryBean 接口,那么 Spring 会先从 singletonFactories 缓存中查找该 Bean 的工厂类实例,如果找到则调用工厂类实例的 getObject() 方法创建 Bean 实例,否则创建一个新的工厂类实例并加入缓存。
Spring 的三级缓存可以提高 Bean 的创建和查找效率,并且可以通过缓存中的 Bean 对象解决循环依赖的问题。但是,由于缓存中的对象是长期驻留的,如果缓存中的对象占用内存过多,会导致系统性能下降,因此需要合理地管理缓存对象。
阅读全文
相关推荐














