在@CacheEvict的键中使用非常量属性或字段

时间:2017-08-21 14:01:54

标签: java spring spring-cache

是否可以在@CacheEvict注释的键中使用当前类的非常量字段或属性?例如:

public class Feature {

    private int id;

    @Autowired
    private FeaturesClient featuresClient;

    @CacheEvict(value = CacheConfiguration.FEATURES, key = 
               "T(java.lang.String).valueOf(#userId).concat(T(java.lang.String)" +
               ".valueOf( **#id** ))")
    public boolean isFeatureAvailable(long userId) {
        return featuresClient.isFeatureAvailable(userId, id);
    }

}

1 个答案:

答案 0 :(得分:1)

@CacheEvict(key = "#userId + #root.target.id")

Documentation

  

#root.method#root.target#root.caches分别用于引用方法,目标对象和受影响的缓存。