spring cache原理

核心类:
CacheManager:缓存管理器,获取缓存的接口。
Cache:缓存操作抽象接口,抽象实现类为AbstractValueAdaptingCache

配置类:
CachingConfigurerSupport:缓存配置支持类,需要使用spring cache的项目继承,一个项目只能有一个相关bean。
AbstractCachingConfiguration:抽象缓存配置,用于初始化配置。加载cacheManager、 cacheResolver、 keyGenerator
ProxyCachingConfiguration : 继承AbstractCachingConfiguration,默认的缓存代理配置,用来配置拦截器。

拦截器:
BeanFactoryCacheOperationSourceAdvisor: 缓存切面,重写拦截器时不需要修改
CacheInterceptor:缓存拦截器,继承CacheAspectSupport。重写拦截器时可以继承。
CacheAspectSupport:缓存拦截核心实现,缓存拦截器都需要继承

基本原理:
1 项目继承CachingConfigurerSupport,进行缓存配置,一个项目只能有一个缓存配置类。项目启动时自动加载。

2 ProxyCachingConfiguration代理缓存配置类进行缓存拦截器注册,项目启动时自动加载。

3 方法执行的时候缓存拦截器会拦截带有缓存注解(cacheable/cacheput/cacheEvit/cacheTtl)的方法,进入CacheAspectSupport的execute方法中。

4 CacheAspectSupport的execute的主逻辑:前置删除缓存操作–查询缓存–(如果查询不到缓存执行方法)–添加缓存—后置删除缓存操作。每次都会按照这个流程走,在具体的方法里面会判断当前操作是否被执行。比如@cacheable注解的时候调用删除缓存操作方法就不会有任何执行。

5 如果缓存操作(get/put/evict)失败就会调用CacheErrorHandler的相应方法。如果没有CacheErrorHandler,默认使用SimpleCacheErrorHandler。

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

  • 0
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值