Java【spring】使用注解 加缓存、清缓存、缓存相关 的使用

9 篇文章 1 订阅

简介:Spring提供注解来支持Spring cache。Spring cache是作用在方法上的,当调用一个缓存方法时,会把该方法的参数和结果作为一个键值对存放在缓存中,等到下次利用同样的参数来调用该方法时,就不再执行该方法,而是从缓存直接返回。

缓存注解有以下三个:
@Cacheable @CacheEvict @CachePut

@Cacheable

 // 示例
 @Cacheable(cacheNames = "getCategoryInfoCoupon", key = "#tenantId + ':' + #categoryId + ':' + #page.current")
 public IPage<CouponProdsDto> getCategoryInfoCoupon(Page<CouponProdsDto> page, Long categoryId, String tenantId, String userId) {}

@Cacheable可以标记在一个类上,也可以标记在一个方法上。标记在一个类上,则表明该类的所有方法都是支持缓存的。Spring在缓存方法的返回值都是以键值对进行缓存的,值就是方法的返回结果,至于key的话,Spring支持两种策略,默认策略和自定义策略。
注意:当一个支持缓存的方法在对象内部被调用是不会触发缓存功能的
@Cacheable可以指定三个属性,valuekeycondition

@CacheEvict

@CacheEvict清除指定下所有缓存

// 示例
@CacheEvict(cacheNames = "parts:grid",allEntries = true)

此注解会清除part:grid下所有缓存,用法和@Cacheable等一样,清除指定key的缓存
@CacheEvict要求指定一个或多个缓存,使之都受影响。此外,还提供了一个额外的参数allEntries 。表示是否需要清除缓存中的所有元素。默认为false,表示不需要。
当指定了allEntries为true时,Spring Cache将忽略指定的key。有的时候我们需要Cache一下清除所有的元素。
allEntries属性: 是否清空所有缓存内容
beforeInvocation属性: 是否在方法执行前就清空

@CachePut

// 示例
@CachePut(value="accountCache",key="#account.getName()")// 更新accountCache 缓存  
public Account updateAccount(Account account) {   
   return updateDB(account);   
}

@CachePut标注的方法在执行前不会去检查缓存中是否存在之前执行过的结果,而是每次都会执行该方法,并将执行结果以键值对的形式存入指定的缓存中。
以key作为键,返回值作为值,进行缓存。

参考:Spring缓存注解@Cache使用(更全,我只是简单记录一下下)

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

哒不溜-w

别给我打手续费太贵

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值