Spring Boot et cache de caféine

1. Vue d'ensemble

Le cache Caffeine est une bibliothèque de cache haute performance pour Java. Dans ce court tutoriel, nous verrons comment l'utiliser avec Spring Boot.

2. Dépendances

Pour commencer avec Caffeine et Spring Boot, nous ajoutons d'abord les dépendances spring-boot-starter-cache et caffeine :

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

Ceux-ci importent la prise en charge de la mise en cache Spring de base, ainsi que la bibliothèque Caffeine.

3. Configuration

Nous devons maintenant configurer la mise en cache dans notre application Spring Boot.

Tout d'abord, nous créons un grain de caféine . Ceci est la configuration principale qui contrôle le comportement de mise en cache, comme l' expiration, les limites de taille de cache et plus :

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

Ensuite, nous devons créer un autre bean à l'aide de l' interface Spring CacheManager . Caffeine fournit son implémentation de cette interface, qui nécessite l' objet Caffeine que nous avons créé ci-dessus:

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

Enfin, nous devons activer la mise en cache dans Spring Boot à l'aide de l' annotation @EnableCaching . Cela peut être ajouté à n'importe quelle classe @Configuration dans l'application.

4. Exemples

Avec la mise en cache activée et configurée pour utiliser la caféine, examinons quelques exemples de la façon dont nous pouvons utiliser la mise en cache dans notre application Spring Boot.

La principale façon d'utiliser la mise en cache dans Spring Boot consiste à utiliser l' annotation @Cacheable . Cette annotation fonctionne sur n'importe quelle méthode d'un bean Spring (ou même sur toute la classe). Il demande au gestionnaire de cache enregistré de stocker le résultat de l'appel de méthode dans un cache.

Une utilisation typique est à l'intérieur des classes de service:

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

L'utilisation de l' annotation @Cacheable sans paramètres forcera Spring à utiliser des noms par défaut pour le cache et la clé de cache.

Nous pouvons remplacer ces deux comportements en ajoutant des paramètres à l'annotation:

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

L'exemple ci-dessus indique à Spring d'utiliser un cache nommé address_cache et l' argument customerId pour la clé de cache.

Enfin, comme le gestionnaire de cache est lui-même un bean Spring, nous pouvons également le connecter automatiquement à n'importe quel autre bean et travailler avec lui directement :

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

Dans ce didacticiel, nous avons vu comment configurer Spring Boot pour utiliser le cache Caffeine, ainsi que quelques exemples d'utilisation de la mise en cache dans notre application.

Et bien sûr, tous les exemples de code se trouvent sur GitHub.