SpringBoot项目整合cache后,处理缓存非常方便,可以直接使用注解的方式快捷的新增,删除缓存。最近使用到三个相关的注解,感觉很方便,用法分享给大家:
1,@Cacheable
@Cacheable添加缓存,方法相同参数请求时会直接读取缓存中的数据
@Cacheable(value = CacheValueConsts.CONFIG_NOTIFICATION_PAGE, key = "#paramPage")
public List<ConfigNotificationEntity> selectNotificationListCache(NotificationPageParamBean paramPage) {
List<ConfigNotificationEntity> ConfigNotificationEntities = this.baseMapper.selectNotificationList(paramPage);
return ConfigNotificationEntities;
}
value :缓存名称
key:缓存的key,#xxx的用法是获取方法参数xxx作为key,若xxx为对象,也可以获取该对象的某一个属性作为key。(我自己尝试不用#获取方法参数生成key,直接用字符串写死该key值,居然一直报错,暂时没找到问题原因…)
补充:查阅资料得知,该注解还存在其他参数,分别是condition(缓存条件),sync(标识是否同步)
2,@CacheEvict
@CachEvict 能够根据一定的条件对缓存进行清空。下面是我的某一个使用示例:
@CacheEvict(value = CacheValueConsts.CONFIG_NOTIFICATION, key = "#configNotification.getId()")
public boolean updateByIdCache(ConfigNotificationEntity configNotification) {
configNotificationService.clearNotificationCache();
return configNotificationService.updateById(configNotification);
}
value :缓存名称
key:缓存的key
condition:缓存的条件
allEntries:是否清除所有缓存数据,默认值是false
3,@Caching
@Caching注解可以让我们在一个方法或者类上同时指定多个Spring Cache相关的注解。有三个属性:cacheable、put和evict
@Caching(evict = {
@CacheEvict(value = CacheValueConsts.CONFIG_NOTIFICATION_PAGE, allEntries = true),
@CacheEvict(value = CacheValueConsts.CONFIG_NOTIFICATION_ALL, allEntries = true)
})
@Override
public boolean clearNotificationCache() {
return true;
}
这三个注解的用法,我也是今天刚接触,只是有一些粗浅的了解和使用,分享出来给大家,还有很多细致的东西没有搞清楚,后续会持续研究。