2017-06-13 6 views
0

Ich benutze Feder. Ich möchte folgende Methode zwischenspeichern:Wie speichert man eine Liste im Frühjahr?

@Cacheable(cacheName = "xxx", key = "'foo_'.concat(#va1)") 
public void foo(String var1, List<String> var2) { ... } 

Ich möchte den Wertsatz von var2 in den Cache-Schlüssel aufnehmen. Ich weiß
key = "'foo_'.concat(#va1).concat('_').concat(#var2)" ist falsch. (Weil (#var2) seine Speicheradresse zurückgibt, keine Werte).

Was soll ich tun?

+0

haben Sie versucht, '# {var2.toString()}' – Jaiwo99

+0

was versuchen Sie zu cachen? wie es keine Rückkehr gibt? Normalerweise kann eine Methode zwischengespeichert werden, so dass die Rückgabe aus dem Cache abgerufen wird. – kism3t

+0

Entschuldigung. es sollte eine Rendite haben. Ich habe einen Fehler gemacht. – zchen

Antwort

1

Sie konnten die hashCode der Liste erhalten:

key = "'foo_'.concat(#va1).concat('_').concat(#var2.hashCode())" 

ODER

key = "'foo_'.concat(#va1).concat('_').concat(#var2.toString())" 

es versuchen.

Mit dem zweiten riskieren Sie, dass Ihr Schlüssel je nach Größe der Liste zu lang werden kann.

Verwandte Themen