2017-08-30 60 views
0

我只想爲管理員的用戶禁用緩存。所以我編寫了一個方法來生成密鑰,如下所示,管理員返回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"; 
} 

回答

1

我想你可以使用conditional caching feature達到目的。如下所示:

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

請注意,在這種情況下,您將不得不將用戶對象傳遞給此方法。

相關問題