2017-08-30 3 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を使用してください。このようなSmth:

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

この場合、このメソッドにユーザーオブジェクトを渡す必要があることに注意してください。

関連する問題