
添加如下依赖dependency groupIdorg.springframework.boot/groupId artifactIdspring-boot-starter-data-redis/artifactId /dependency dependency groupIdorg.springframework.boot/groupId artifactIdspring-boot-starter-aop/artifactId /dependency其余在spring环境。Target(ElementType.METHOD)Retention(RetentionPolicy.RUNTIME)DocumentedpublicinterfaceYdCache{//缓存时长longtime()default-1L;}AspectComponentpublicclassSysCacheAspect{ResourceStringRedisTemplatestringRedisTemplate;Around(annotation(com.example.mybatisplus.aspect.YdCache))publicObjectaround(ProceedingJoinPointpoint)throwsThrowable{//取得方法签名MethodSignaturesignature(MethodSignature)point.getSignature();//取得方法对象Methodmethodsignature.getMethod();//取得缓存注解对象YdCacheydCachemethod.getAnnotation(YdCache.class);//取得注解上的缓存时长longcacheTimeydCache.time();//redis的key为类名:方法名:参数StringclassNamepoint.getTarget().getClass().getName();StringmethodNamesignature.getName();StringargsJsonJSON.toJSONString(point.getArgs());StringkeyclassName:methodName:argsJson;//取得返回值类类型Class?returnTypemethod.getReturnType();//从缓存取得数据StringcacheDatastringRedisTemplate.opsForValue().get(key);//命中缓存if(cacheData!null){//返回缓存数据returnJSON.parseObject(cacheData,returnType);}//没命中缓存 执行方法Objectresultpoint.proceed();//设置缓存缓存时长为负数则永久缓存if(cacheTime0){stringRedisTemplate.opsForValue().set(key,JSON.toJSONString(result));}else{//缓存指定时长stringRedisTemplate.opsForValue().set(key,JSON.toJSONString(result),cacheTime,TimeUnit.SECONDS);}returnresult;}}在方法上添加注解即可time为缓存时间