![](https://i-blog.csdnimg.cn/blog_migrate/82f6ca186f193f0a3c487a066ec22442.jpeg)
个人主页:SueWakeup
系列专栏:学习技术栈
个性签名:保留赤子之心也许是种幸运吧
![](https://i-blog.csdnimg.cn/blog_migrate/8c7ace79a80a67a9d90bce6c7e3b38a1.jpeg)
目录
注:手机端浏览本文章可能会出现 “目录”无法有效展示的情况,请谅解,点击侧栏目录进行跳转
本栏传送门
1. Spring Cache 介绍
Spring Cache 是一个框架,实现类基于注解的缓存功能,提供一层抽象,底层可以切换不同的 cache 实现。具体是通过 CacheManager 接口来统一不同的缓存技术。
CacheManager 缓存管理器是 Spring 提供的各种缓存技术抽象接口
针对不同的缓存技术需要实现不同的 CacheManager:
CacheManager 描述 EhCacheManager 使用 EhCache 作为缓存技术(Spring Cache 框架操作的默认缓存) GuavaCacheManager 使用 Google 的 GuavaCache 作为缓存技术 RedisCacheManager 使用 Redis 作为缓存技术
2. Spring Cache 常用注解
注解 说明 @EnableCaching 开启缓存注解功能 @Cacheable 在方法执行前 Spring 先查看缓存中是否有数据,如果有数据,则直接返回缓存数据;若没有数据,调用方法并将方法返回值放到缓存中 @CachePut 将方法的返回值放到缓存中 @CacheEvict 将一条或多条数据从缓存中删除 使用步骤:
1. 引入缓存启动器:spring-boot-starter-cache,spring-boot-starter-data-redis
2. @EnableCaching:在启动类上,开启基于注解的缓存
3. @Cacheable:标在方法上,返回的结果会进行缓存
属性:value / cacheNames 缓存的名字
key:作为缓存中的 Key 值,可自己使用 SpEL 表达式指定(不指定就是参数值),缓存结果是方法返回值
名字 描述 示例 methodName 当前被调用的方法名 #root.methodName targetClass 当前被调用的目标对象 #root.target targetClass 当前被调用的目标对象类 #root.targetClass args 当前被调用的方法的参数列表 #root.args [0] caches 当前方法调用使用的缓存列表
(如@Cacheable(value ={"cache1","cache2"})),则有两个cache
#root.cache [0].name argumentname
方法参数的名字.可以直接 #参数名,也可以使用 #p0 或 # a0 的形式,0 代表参数的索引 #iban、#a0、#p0 result 方法执行后的返回值(仅当方法执行之后的判断有效,在@CachePut 使用于更新数据后可用) #result