Spring Cache自定义KeyGenerator
如何自定义Key?如何使用?该注意哪些点?文章目录
前言
随着业务的升级、用户规模的增长,对系统的吞吐量提出了更高要求,单纯依赖数据库的优化已经远远不够,此时缓存呼之欲出。
Spring Cache是Spring家的缓存管理器,基于AOP实现,添加了Spring Cache系列注解的方法将被代理。多的就不说了,本文主要讲解自定义key生成器。
一、KeyGenerator是什么
KeyGenerator是Spring Cache管理器的一小部分功能,能实现自定义key的生成规则。
二、使用步骤
1.实现KeyGenerator接口并注册到IoC容器中
代码如下:
@Component
public class RecordKeyGenerator implements KeyGenerator {
// ...
}
不实现接口将通过编译,但调用方法时代理失败,抛出BeanNotOfRequiredTypeException异常,参考org.springframework.cache.interceptor.CacheAspectSupport。
为什么要加入容器?因为你要从IoC容器中获取[/dog],加入容器的方式有多种,这里使用注解。
2.完善代码逻辑
完善你要生成的Key规则,这里能获取方法的所有信息,包括方法签名、参数等等,这里要按照业务需求来生成哦,避免出现逻辑bug。
StrUtil为hutool包下工具类,按需求替换。
代码如下:
/**
* <p>
* <pre>Generate a key for specified scene.</pre>
* {@link org.springframework.cache.interceptor.SimpleKeyGenerator}
* </p>
*
* @author by aiker
* @date 2021/7/13
*/
@Slf4j
@Component
public class recordKeyGenerator implements KeyGenerator {
@SuppressWarnings("NullableProblems")
@Override
public Object generate(Object target, Method method, Object..