EhCache: @CacheEvict auf Mehrere Objekte Mit Annotationen

Ich verstehen, dass die Verwendung von Spring (3.1) errichtet in der Cache-Manager mit dem EhCache Umsetzung gibt es gewisse Einschränkungen, wenn Sie im proxy-Modus (Standard) laut diesem post:

Spring 3.1 @Cacheable - Methode noch ausgeführt

Betrachten Sie das Szenario, die ich habe:

@CacheEvict(value = "tacos", key = "#tacoId", beforeInvocation = true)
removeTaco(String tacoId) {
    //Code to remove taco
}

removeTacos(Set<String> tacoIds) {
    for (String tacoId : tacoIds) {
        removeTaco(tacoId); 
    }
}

In diesem repository Methode, den Aufruf removeTacos(tacoIds) werden nicht tatsächlich Entfernen Sie etwas aus dem Cache, da der oben beschriebene Beschränkung. Mein workaround ist, die auf einer service-Schicht oben, wenn ich wollte, es zu löschen, mehrere tacos, würde ich die Schleife durch jede taco-Id und übergeben Sie es in removeTaco(), und nie über removeTacos()

Allerdings Frage ich mich, ob es eine andere Möglichkeit, dies zu erreichen.

1) gibt es ein SpEL-Ausdruck, die ich könnte passieren in der Schlüssel, der Ihnen sagen würde, EhCache zu verfallen, jede id im Set?

e.g.  @CacheEvict(value = "tacos", key = "#ids.?[*]") //I know this isn't valid, just can't find the expression.

Oder gibt es eine Möglichkeit, ich kann removeTacos () - Aufruf removeTaco und tatsächlich verfallen die Gecachten Objekte?

InformationsquelleAutor KidA78 | 2012-08-07
Schreibe einen Kommentar