在REST API上,我想创建一个清除特定缓存的终结点:

DELETE /cache/{cacheName}

是否可以实现它而不是:

public void clearCache(String cacheName) {
    cacheManager.getCache(cacheName).clear();
}


像这样?

@CacheRemoveAll
public void clearCache(String cacheName) {}


因此,我避免注入CacheManager

最佳答案

不幸的是,没有。

注释不能与动态对象一起配置,只能使用常量。因此,不可能将路径参数cacheName传递给@CacheRemoveAll批注。只有事先知道所有缓存名称,您才能执行此操作-通过为每个缓存创建DELETE端点,例如:

@CacheRemoveAll(cacheName="cache-1")
public void clearCache1(){}

@CacheRemoveAll(cacheName="cache-2")
public void clearCache2(){}

10-08 17:05