Spring Boot e Caffeine Cache

1. Panoramica

Caffeine cache è una libreria cache ad alte prestazioni per Java. In questo breve tutorial vedremo come utilizzarlo con Spring Boot.

2. Dipendenze

Per iniziare con Caffeine e Spring Boot, aggiungiamo prima la spring-boot-starter-cache e le dipendenze da caffeina :

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

Questi importano il supporto base per la memorizzazione nella cache Spring, insieme alla libreria Caffeine.

3. Configurazione

Ora dobbiamo configurare la cache nella nostra applicazione Spring Boot.

Per prima cosa creiamo un chicco di caffeina . Questa è la configurazione principale che controllerà il comportamento della memorizzazione nella cache come la scadenza, i limiti delle dimensioni della cache e altro :

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

Successivamente, dobbiamo creare un altro bean utilizzando l' interfaccia Spring CacheManager . Caffeine fornisce la sua implementazione di questa interfaccia, che richiede l' oggetto Caffeine che abbiamo creato sopra:

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

Infine, dobbiamo abilitare la memorizzazione nella cache in Spring Boot utilizzando l' annotazione @EnableCaching . Questo può essere aggiunto a qualsiasi classe @Configuration nell'applicazione.

4. Esempi

Con il caching abilitato e configurato per utilizzare Caffeine, diamo un'occhiata ad alcuni esempi di come possiamo utilizzare il caching nella nostra applicazione Spring Boot.

Il modo principale per utilizzare la memorizzazione nella cache in Spring Boot è con l' annotazione @Cacheable . Questa annotazione funziona su qualsiasi metodo di un bean Spring (o anche sull'intera classe). Indica al gestore della cache registrato di memorizzare il risultato della chiamata al metodo in una cache.

Un utilizzo tipico è all'interno delle classi di servizio:

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

L' uso dell'annotazione @Cacheable senza parametri costringerà Spring a utilizzare nomi predefiniti sia per la cache che per la chiave cache.

Possiamo sovrascrivere entrambi questi comportamenti aggiungendo alcuni parametri all'annotazione:

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

L'esempio sopra dice a Spring di utilizzare una cache denominata address_cache e l' argomento customerId per la chiave cache.

Infine, poiché il gestore della cache è esso stesso un bean Spring, possiamo anche collegarlo automaticamente a qualsiasi altro bean e lavorarci direttamente :

@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. conclusione

In questo tutorial, abbiamo visto come configurare Spring Boot per utilizzare Caffeine cache, insieme ad alcuni esempi di come utilizzare il caching nella nostra applicazione.

E, naturalmente, tutti gli esempi di codice si trovano su GitHub.