0 Tage Serie
java / beginner
Snippet

Teure Abfragen mit Cacheable beschleunigen

Die @Cacheable-Annotation speichert Rückgabewerte einer Methode in einem Cache (z. B. Redis, Caffeine). Bei weiteren Aufrufen mit demselben Schlüssel überspringt Spring die Methode und liefert das Ergebnis direkt aus dem Cache.

snippet.java
java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
@Service
public class ProductService {
@Cacheable(value = "products", key = "#id")
public Product findProductById(Long id) {
simulateSlowDatabaseCall();
return new Product(id, "Wireless Mouse");
}
private void simulateSlowDatabaseCall() {
try {
Thread.sleep(2000);
} catch (InterruptedException e) {
Thread.currentThread().interrupt();
}
}
}
spring
Erklärung
1
@Cacheable(value = "products", key = "#id")
Speichert das zurückgegebene Produkt im Cache 'products' unter Verwendung des Parameters 'id' als Schlüssel.
2
public Product findProductById(Long id) {
Definiert die Service-Methode, deren Aufruf bei einem Cache-Treffer übersprungen wird.
3
Thread.currentThread().interrupt();
Stellt den Interrupt-Status des Threads wieder her, falls eine InterruptedException auftritt.