SpringBoot 缓存之常用注解
一、@CachePut 注解使用
1)、注解使用说明
标识了这个注解就会既调用方法,又更新缓存数据。主要应用场景就是:修改了数据库的某个数据,同时更新缓存。
2)、注解使用注意事项
需要注意 @CachePut
和 @Cacheable
这两个注解的运行时机是不同的:
@Cacheable 是在调用方法之前先去缓存里面看有没有指定 key 的数据,如果有直接用缓存,没有才去调用方法。
@CachePut 是先调用方法,调用完方法后再将结果放进缓存中。
这里需要注意的点是:
你需要去指定一下 key,这样更新完数据后,才能按照你指定的 key 去覆盖数据。如果你这里不指定 key ,那么数据更新完,就会把入参当成 key 去更新缓存,这样就可能造成缓存数据未覆盖更新情况。
二、@CacheEvict 注解使用
1)、注解使用说明
这个注解的作用就是用来删除缓存中的数据的。使用场景就是:我删除了一个数据,那么同时也就需要在缓存中把这个数据同步删除。
2)、注解重要属性
这个注解有两个比较重要的属性 allEntries
和 beforeInvocation
。
可以通过指定 allEntries = true 把缓存中所有的 key 都删除。
beforeInvocation = false 表示缓存的清除是否在方法之前执行。默认是缓存在方法执行之后执行清除操作,这样如果出现异常,缓存就不会清除。
三、@Caching 注解使用
1)、注解使用说明
可以使用 @Caching
注解来定义复杂的缓存规则。
比如这里我就可以通过 @Caching
注解来组合使用 @Cacheable 和 @CachePut 注解,实现一些复杂的缓存规则。
四、@CacheConfig 注解使用
1)、注解使用说明
一般我们在方法是标注缓存相关的注解时候,都需要指定 key 。这样如果方法比较多,在每个方法上都指定 key ,显得比较冗余,就可以把指定 key 的操作通过 @CacheConfig
来统一指定 key ,标识在类上。这样这个类中每个方法都会统一用这个 key,就不需要在每个方法上都指定。
版权声明: 本文为 InfoQ 作者【hepingfly】的原创文章。
原文链接:【http://xie.infoq.cn/article/ffaa9e649600993b40ca97304】。文章转载请联系作者。
评论