如何创建 Spring 不允许缓存指定密钥的缓存 KeyGenerator
How to create Spring Cache KeyGenerator that allows no caching for specified key
我只想为管理员用户禁用缓存。因此,我编写了一种方法来为管理员生成如下 returns null 的密钥。但是我得到
java.lang.IllegalArgumentException: Null key returned for cache
operation
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) {...}
请注意,在这种情况下,您必须将用户对象传递给此方法。
我只想为管理员用户禁用缓存。因此,我编写了一种方法来为管理员生成如下 returns null 的密钥。但是我得到
java.lang.IllegalArgumentException: Null key returned for cache operation 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) {...}
请注意,在这种情况下,您必须将用户对象传递给此方法。