ich eine Methode habe, an dem ich annotation.The Code ein @Cacheable
haben, ist, wie untenMit @Cacheable und @CacheEvict im Frühjahr
@Cacheable(value="reporties" , key="{#root.methodName,#manager.name}")
public List<Employee> getReportiesForManager(Employee manager){
// code to fetch reporties its a Spring JDBC call
}
Jetzt möchte ich diesen Cache auf einem gewissen Punkt der Zeit vertreiben, wenn Es gibt einige Aktualisierungen für die Berichte für den Manager, wie einige neue Berichte hinzugefügt oder entfernt werden können. Zu dieser Zeit muss ich den Cache dieses Managers entfernen, damit die Anwendung dann neue Daten für diesen Manager holt. Ich warb eine @CacheEvict
auf eine Methode, die ich innerhalb der Methode aufrufen, die die Beziehungen von Manager und seinen Berichten aktualisiert.
@CacheEvict(value="reporties",key="{#name}")
public void evictReportiesCache(String name){}
Dieser Code Arbeit intermittierend und ich bin nicht sicher, ob das der richtige Weg cache.Also den Cacheable verwendet #root.methodName
als Teil Schlüssel gewaltsam zu vertreiben. Kann mir bitte jemand bei dieser Cache-Räumung helfen.
Die Art, wie ich Cache-Räumung mache, ist richtig? – Mukesh
Wie in der anderen Antwort erwähnt, muss der Wert des Schlüssels, den Sie entfernen, der gleiche sein wie der Schlüssel, den Sie zwischengespeichert haben. – Andres