spring注解@CacheResult详细使用说明 ,这个是Hystrix中的缓存注解:

@CacheResult——该注解用来标记请求命令返回的结果应该被缓存,必须与@HystrixCommand注解结合使用,属性:cacheKeyMethod
@CacheRemove——该注解使请求命令的缓存失效,失效的缓存根据定义的Key决定,属性:commandKey,cacheKeyMethod
@CacheKey——该注解用来在请求命令的参数上标记,使其作为缓存的Key值,如果没有标注则会使用所有的参数。如果同时还使用了@CacheResult和@CacheRemove注解的cacheKeyMethod方法指定缓存Key的生成,那么该注解将不起作用,属性:value

如下例子:
@CacheResult(cacheKeyMethod = "getCacheKey")
@HystrixCommand
public User getUserById(Long id) {
System.out.println("getUserById 方法");
user = restTemplate.getForObject("http://hello-xxx/users/{id}/{name}/{xingBie}", User.class,id,name,xingBie);
System.out.println("getUserById 方法 user:"+ user.getId() +" " + user.getName() +" " + user.getXingBie());
return user;
}

// getCacheKey 方法的参数要与 getUserById 方法保持一致否则会报错
//public String getCacheKey(Long id,String name,String xingBie) { 
public String getCacheKey(Long id) { 
    //HystrixRequestContext.initializeContext(); // 缓存上线文初始化代码放在这个方法中,会导致每次调用这个方法缓存都会被清空(初始化)
    System.out.println("执行缓存方法:" + id );
    //System.out.println("查看缓存数据:"  + String.valueOf(id));
    //return String.valueOf(this.id) + String.valueOf(this.name) + String.valueOf(this.xingBie);

    return String.valueOf(id);
}

```