La couche d’abstraction de cache fournit par Spring

Spring en lui même ne fournit pas de mécanisme de cache.

Par le biais des annotations @Cacheable, @CachePut, @Caching, @CachingConfig, @CacheEvict, Spring permet de s’abstraire de l’implémentation du cache utilisé. Cette abstraction est matérialisée par les interfaces Cache et CacheManager.

Pour activer l’abstraction de cache, il est impératif d’annoter un de vos classes de configuration avec @EnableCaching.

Si spring boot est utilisé l’annotation @EnableCaching peut être mis au niveau de l’application main.

Les résultats des méthodes annotés @Cacheable seront automatiquement mis en cache avec comme clé de cache le paramètre de la méthode (si la méthode prend plusieurs paramètres la règle est différente).
Il est cependant possible d’écrire un algorithme spécifique en implémentant la classe KeyGenerator. Il est egalement possible d’utiliser SpeL pour déterminer la valeur de la clé à utiliser.

@Cacheable peut définir les conditions pour lequel le retour de la methode sera mis en cache.

@CachePut permet de mettre à jour la valeur d’une donnée en cache. Le contenu de la méthode annotée @CachePut sera systématiquement exécuté.

@CacheEvict permet de supprimer un ou tout les éléments présents dans le cache. Il est possible d’indiquer si la suppression est à effectuer avant ou apres l’execution de la methode.

@Caching permet de combiner les annotations @Cacheable, @CachePut et @CacheEvict sur une seule méthode. Ceci permet d’appliquer des règles différentes en fonctions du cache utilisés, si plusieurs caches sont utilisées pour stocker les mêmes données.

@CacheConfig permet de définir une configuration commune à toutes les methodes d’une classe. Typiquement, cela peut etre le nom du generateur de cle, le nom du cache a utiliser.

Annotations personnalisés

Il est aussi possible de définir des annotations personnalisés en creant des annotations annotés avec les memes annotations que pour les methodes. Ces annotations pourront par la suite être réutilisés dans toutes votre application.

Leave a Reply

Your email address will not be published. Required fields are marked *