是否可以在@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);
    }

}

最佳答案

是。

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


Documentation


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

10-08 00:16