• 博客园logo
  • 会员
  • 众包
  • 新闻
  • 博问
  • 闪存
  • 赞助商
  • HarmonyOS
  • Chat2DB
    • 搜索
      所有博客
    • 搜索
      当前博客
  • 写随笔 我的博客 短消息 简洁模式
    用户头像
    我的博客 我的园子 账号设置 会员中心 简洁模式 ... 退出登录
    注册 登录
进阶的大白
博客园    首页    新随笔    联系   管理    订阅  订阅
SpringBoot缓存使用步骤

1.导入依赖

<dependency>
     <groupId>org.springframework.boot</groupId>
     <artifactId>spring-boot-starter-cache</artifactId>
</dependency>

 

2.在主启动类上加上开启缓存注解  @EnableCaching

3.将方法的结果进行缓存,需要在方法上加上 @Cacheable 注解

 

注意:

@Cacheable先查询缓存里是否有结果,后调用方法

@CachePut先调用方法,后将方法的返回值写入缓存(更新操作时注意key一致)

 

@Cacheable/@CachePut/@CacheEvict主要参数

value 缓存的名称,必须至少指定一个,也可用cacheName @Cacheable(value="")或@Cacheable(value={"",""}
key 缓存的key,可以为空,如果指定要按照SpEL表达式编写,如不指定,则缺省按照方法的所有参数进行组合 @Cacheable(value="",key="#xx")
condition

缓存的条件,可以为空,使用SpEL编写,返回true或者false,只有为true才进行缓存/清除缓存,在调用方法之前之后都能判断

@Cacheable(value="",condition="#xx判断")

allEntries

(@CacheEvict)

是否清空所有缓存内容,缺省为false,如果指定为true,, 则方法调用后将立即清空所有缓存

@Cacheable(value="",allEntries=true)

beforelnvocation

(@CacheEvict)

是否在方法执行前就清空,缺省为false,如果指定为true,则在方法还没有执行的时候就清空缓存,缺省情况下,如果方法执行抛出异常,则不会清空缓存

@Cacheable(value="",beforelnvocation=true)

unless

(@CachePut)

(@Cacheable)

用于否决缓存的,不像condition, 该表达式只在方法执行之后判断,此时可以拿到返回值result进行判断。条件为true不会缓存,fasle才缓存

@Cacheable(value="",unless="")

keyGenerator

:key的生成器,可以指定key的生成器组件id,和key二者选其一使用

 

SpEL表达式

名字 位置 描述 示例
methodName root object 当前被调用的方法名 #root.methodName
method root object 当前被调用的方法 #root.method.name
target root object 当前被调用的目标对象 #root.target
targetClass root object 当前被调用的目标对象类 #root.targetClass
args root object 当前被调用的方法的参数列表 #root.args[0]
caches root object 当前方法调用使用的缓存列表(如@Cacheable(value={"cache1",#root.caches[0].name"cache2"}),则有 两个cache #root.caches[0].name
argument name evaluation context 方法参 数的名字.可以直接#参数名,也可以使用#p0或#a0 的#iban 、#a0 、#p0形式,0代表参数的索引; #iban 、#a0 、#p0
result evaluation context evaluation context方法执行 后的返回值(仅当方法执行之后的判断有效,如unless','cache put'的表达式'cache evict' 的表达式 #result
posted on 2020-08-01 22:47  进阶的大白  阅读(240)  评论(0)    收藏  举报
刷新页面返回顶部
博客园  ©  2004-2025
浙公网安备 33010602011771号 浙ICP备2021040463号-3