Spring Boot und Koffein-Cache

1. Übersicht

Der Koffein-Cache ist eine leistungsstarke Cache-Bibliothek für Java. In diesem kurzen Tutorial erfahren Sie, wie Sie es mit Spring Boot verwenden.

2. Abhängigkeiten

Um mit Koffein und Spring Boot zu beginnen, fügen wir zunächst die Abhängigkeiten Spring-Boot-Starter-Cache und Koffein hinzu :

  org.springframework.boot spring-boot-starter-cache   com.github.ben-manes.caffeine caffeine  

Diese importieren die Basis-Spring-Caching-Unterstützung zusammen mit der Koffeinbibliothek.

3. Konfiguration

Jetzt müssen wir das Caching in unserer Spring Boot-Anwendung konfigurieren.

Zuerst erstellen wir eine Koffeinbohne . Dies ist die Hauptkonfiguration, die das Caching-Verhalten wie Ablaufdatum, Cache-Größenbeschränkungen und mehr steuert :

@Bean public Caffeine caffeineConfig() { return Caffeine.newBuilder().expireAfterWrite(60, TimeUnit.MINUTES); }

Als Nächstes müssen wir eine weitere Bean mithilfe der Spring CacheManager- Schnittstelle erstellen. Caffeine stellt die Implementierung dieser Schnittstelle bereit, für die das oben erstellte Caffeine- Objekt erforderlich ist :

@Bean public CacheManager cacheManager(Caffeine caffeine) { CaffeineCacheManager caffeineCacheManager = new CaffeineCacheManager(); caffeineCacheManager.setCaffeine(caffeine); return caffeineCacheManager; }

Schließlich müssen wir das Caching in Spring Boot mithilfe der Annotation @EnableCaching aktivieren . Dies kann zu jeder @ Configuration- Klasse in der Anwendung hinzugefügt werden .

4. Beispiele

Wenn das Caching für die Verwendung von Koffein aktiviert und konfiguriert ist, sehen wir uns einige Beispiele an, wie wir das Caching in unserer Spring Boot-Anwendung verwenden können.

Die primäre Methode zum Verwenden des Caching in Spring Boot ist die Annotation @Cacheable . Diese Annotation funktioniert mit jeder Methode einer Spring Bean (oder sogar der gesamten Klasse). Es weist den registrierten Cache-Manager an, das Ergebnis des Methodenaufrufs in einem Cache zu speichern.

Eine typische Verwendung ist innerhalb von Serviceklassen:

@Service public class AddressService { @Cacheable public AddressDTO getAddress(long customerId) { // lookup and return result } }

Wenn Sie die Annotation @Cacheable ohne Parameter verwenden, wird Spring gezwungen, Standardnamen sowohl für den Cache als auch für den Cache-Schlüssel zu verwenden.

Wir können diese beiden Verhaltensweisen überschreiben, indem wir der Annotation einige Parameter hinzufügen:

@Service public class AddressService { @Cacheable(value = "address_cache", key = "customerId") public AddressDTO getAddress(long customerId) { // lookup and return result } }

Im obigen Beispiel wird Spring angewiesen, einen Cache mit dem Namen address_cache und das Argument customerId für den Cache-Schlüssel zu verwenden.

Da der Cache-Manager selbst eine Spring-Bean ist, können wir ihn auch automatisch in jede andere Bean verdrahten und direkt damit arbeiten :

@Service public class AddressService { @Autowired CacheManager cacheManager; public AddressDTO getAddress(long customerId) { if(cacheManager.containsKey(customerId)) { return cacheManager.get(customerId); } // lookup address, cache result, and return it } }

5. Schlussfolgerung

In diesem Tutorial haben wir gesehen, wie Spring Boot für die Verwendung des Koffein-Cache konfiguriert wird, sowie einige Beispiele für die Verwendung des Caching in unserer Anwendung.

Und natürlich befinden sich alle Codebeispiele auf GitHub.