需求:
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(