我只想为管理员用户禁用缓存。所以我写了一个生成密钥的方法,如下所示,为admins返回null。但是我得到了
java.lang.IllegalArgumentException:为缓存返回Null键 手术 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";
}
答案 0 :(得分:1)
我猜你可以使用conditional caching feature来实现这一目标。像这样的Smth:
@Cacheable(cacheNames = "topmenu", condition="#user.isAdmin()")
@Override
public String renderResponse(User user) {...}
请注意,在这种情况下,您必须将用户对象传递给此方法。