如何创建不允许指定密钥缓存的Spring Cache KeyGenerator
问题描述:
我只想为管理员的用户禁用缓存。所以我编写了一个方法来生成密钥,如下所示,管理员返回null。但我得到如何创建不允许指定密钥缓存的Spring Cache KeyGenerator
java.lang.IllegalArgumentException异常:空键返回缓存 操作 exeption。
有什么办法可以实现吗?
//a method that generates a menu for each user
@Cacheable(cacheNames = "topmenu", keyGenerator = "uiComponentKey")
@Override
public String renderResponse() {...}
//method used by a key generator to generate cache keys.
@Override
public Object getCacheKey() {
if (user.isAdmin()) {
return null;
}
return user.getUser().getLogin() + "@" + "topmenu";
}
答
我想你可以使用conditional caching feature达到目的。如下所示:
@Cacheable(cacheNames = "topmenu", condition="#user.isAdmin()")
@Override
public String renderResponse(User user) {...}
请注意,在这种情况下,您将不得不将用户对象传递给此方法。