Ich habe überall online nach einer einfachen Antwort auf die obige Frage gesucht, und kann es einfach nicht finden. Ich habe eine Methode wie:Was macht Spring @Cacheable, wenn er auf eine Methode gesetzt wird, die eine Liste zurückgibt?
@Cacheable(cacheNames = "objects")
public List<Object> get() { .. }
Ich verwende ehcache 2.10.0 mit Spring Framework 4.2.1, und ich kann die folgende Ausgabe für diese Methode finden Sie unter:
Adding cacheable method 'get' with attribute: [CacheableOperation[public java.util.List com.example.DAO.get()] caches=[objects] | key='' ...
auch (in späteren Logging)
Computed cache key 'SimpleKey []' for operation ...
Was ist die @Cacheable Anmerkung soll in dieser Situation tun? Legen Sie jedes Objekt in den Cache, der durch hashCode getastet wird (wie an anderer Stelle angedeutet)? Oder plonk einfach die ganze Liste in den Cache unter einem listenbasierten HashCode?
Also wird es die gesamte Liste beim zweiten Aufruf der Methode get() zurückgeben? – ben3000
Ja würde es. Da die Methode bereits ausgeführt wurde, wird das Objekt zwischengespeichert. Bitte beachten Sie, dass Ihre Methode auch öffentlich sein muss. –
Können einzelne Objekte in der Liste unter separaten Schlüsseln zwischengespeichert werden? – ben3000