需求:
API 端需要调用我这儿的一个接口,接口的数据是Mysql 全表的数据(涉及很多张表的数据拼接), 于是引入了Spring -cache 和 redis 缓存,Service 层的代码如下:
@Override
@Cacheable(value = "cache:apiPolicy")
public List<PolicyMain> apiList(Map<String, Object> map) {
List<PolicyBaseCommonBO> policyBaseCommonBOList = policyBaseCommonService.list(map);
return setDate(policyBaseCommonBOList);
}
这个map 里面是查询的条件,也就导致了无法按记录的id去缓存, 每当mysql 的数据发生更改时,于是这里需要自己定义@CachePut 和 @CacheAdd。
思路: 通过AOP 获取注解,拿到Cache ,然后转pojo,处理对应的cache 。
1.自定义注解
@Target({ElementType.METHOD})
@Retention(RetentionPolicy.RUNTIME)
@Documented
public @interface MyCacheAdd {
@AliasFor("cacheNames

本文介绍了在Spring Boot应用中,针对API接口返回全表数据的场景,如何结合Spring Cache和Redis实现自定义缓存注解。内容包括自定义@CachePut和@CacheAdd注解,SPEL表达式解析key以及AOP逻辑,旨在优化数据查询效率。
最低0.47元/天 解锁文章
1510

被折叠的 条评论
为什么被折叠?



