# 方法缓存   @Cached注解在Service的方法上,实现对方法结果进行缓存。      1、返回类型不能是```void```/```CompletableFuture```
     2、返回类型必须是可json序列化的
     3、修饰必须是```protected```/```public```
     4、修饰不能是```final```/```static```
  本地缓存和远程缓存可同时设置,```expire```设置为0,表示永不过期, 支持异步方法(返回类型为```CompletableFuture```)。   将结果进行本地缓存30秒且远程缓存60秒 ```java @Cached(key = "name", localExpire = "30", remoteExpire = "60") public String getName() { return "haha"; } ```   以参数code为key将结果进行本地缓存(时长由环境变量```env.cache.expire```配置,没配置采用默认值30秒) ```java @Cached(key = "#{code}", localExpire = "${env.cache.expire:30}") public CompletableFuture getNameAsync(String code) { return redis.getStringAsync(code); } ```   以参数code+map.id为key将结果进行远程缓存60毫秒 ```java @Resource private CacheManager cacheManager; //实时修改远程缓存的key值 public void updateName(String code, Map map) { cacheManager.remoteSetString(code, code + "_" + map.get("id"), Duration.ofMillis(60)); } @Cached(key = "#{code}_#{map.id}", remoteExpire = "60", timeUnit = TimeUnit.MILLISECONDS) public String getName(String code, Map map) { return code + "-" + map; } ``` # 缓存配置 ```xml ```