其实是这样的:spring考虑如果除了增删改查之外,如果用户需要自定义自己的注解,或者有些比较复杂的功能需要增删改查的情况,这时就可以用@Caching 注解来实现 。
还要一个问题:
上面的例子中使用的缓存key是#type,但是如果有些缓存key比较复杂,是实体中的几个字段组成的,这种情况要如何定义呢?
一起看看下面的例子:
@Datapublic class QueryCategoryModel {/*** 系统编号*/private Long id;/*** 父分类编号*/private Long parentId;/*** 分类名称*/private String name;/*** 分类层级*/private Integer level;/*** 类型*/private Integer type;}@Cacheable(value = https://www.isolves.com/it/cxkf/kj/2020-09-27/"category", key = "#type")public CategoryModel getCategory2(QueryCategoryModel queryCategoryModel) {return getCategoryByType(queryCategoryModel.getType());}
这个例子中需要用到QueryCategoryModel实体对象的所有字段,作为一个key,这种情况要如何定义呢?
1.自定义一个类实现KeyGenerator接口
public class CategoryGeneratorimplements KeyGenerator {@Overridepublic Object generate(Object target, Method method, Object... params) {return target.getClass().getSimpleName() + "_"+ method.getName() + "_"+ StringUtils.arrayToDelimitedString(params, "_");}}
2.在CacheConfig类中定义CategoryGenerator的bean实例
@Beanpublic CategoryGenerator categoryGenerator() {return new CategoryGenerator();}
3.修改之前定义的key
@Cacheable(value = https://www.isolves.com/it/cxkf/kj/2020-09-27/"category", key = "categoryGenerator")public CategoryModel getCategory2(QueryCategoryModel queryCategoryModel) {return getCategoryByType(queryCategoryModel.getType());}
好了,spring cache先介绍到这里,如果这篇文档对您有所帮助或者有所启发的话,麻烦关注一下:苏三说技术,或者帮忙点赞或转发,坚持原创不易,您的支持是我坚持最大的动力 。后面我会分享更多更实用的干货,谢谢大家的支持 。
【使用spring cache让我的接口性能瞬间提升了100倍】
推荐阅读
- 如何使用软路由实现宽带加速,免费让300M宽带变600M
- 使用 Python 自动发送 QQ 消息
- 人人都能掌握的Chrome使用技巧
- Android Hawk框架使用介绍
- 使用Docker来构建、运行、发布微服务
- 使用Excel来制作文件管理目录
- RFM模型升级,使用Excel完成全自动分析
- Springboot 实现数据库备份还原
- 组策略 WindowsServer2008的使用详解
- Docker下使用disconf:细说demo开发