如何创建不允许对指定密钥进行缓存的Spring Cache KeyGenerator



我只想为管理员用户禁用缓存。因此,我编写了一个生成密钥的方法,如下所示,为管理员返回null。但我有

java.lang.IollegalArgumentException:为缓存返回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";
}

我想您可以使用条件缓存功能来实现这一点。Smth是这样的:

@Cacheable(cacheNames = "topmenu", condition="#user.isAdmin()")
@Override
public String renderResponse(User user) {...}

注意,在这种情况下,您必须将用户对象传递给该方法。