如何创建不允许缓存指定键的Spring Cache KeyGenerator

时间:2017-08-30 10:35:33

标签: spring spring-cache

我只想为管理员用户禁用缓存。所以我写了一个生成密钥的方法,如下所示,为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";
}

1 个答案:

答案 0 :(得分:1)

我猜你可以使用conditional caching feature来实现这一目标。像这样的Smth:

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

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