Configuration de JetCache dans un projet Spring Boot

Dépednances Maven

Pour intégrer JetCache, vous devez choisir le client Redis approprié (Jedis ou Lettuce) et ajouter la dépendance correspondante à votre fichier pom.xml.

Utilisation de Jedis :

<dependency>
    <groupId>com.alicp.jetcache</groupId>
    <artifactId>jetcache-starter-redis</artifactId>
    <version>2.7.0</version>
</dependency>

Utilisation de Lettuce :

<dependency>
    <groupId>com.alicp.jetcache</groupId>
    <artifactId>jetcache-starter-redis-lettuce</artifactId>
    <version>2.7.0</version>
</dependency>

Configuration du fichier application.yml

La configuration définit les paramètres globaux du cache distant, tels que le type de convertissseur de clés et les détails de connexion au cluster ou au mode Sentinel.

Exemple de configuration avec Jedis :

jetcache:
  areaInCacheName: false
  remote:
    default:
      type: redis
      keyConvertor: fastjson2
      poolConfig:
        minIdle: 5
        maxIdle: 100
        maxTotal: 200
      password: "mot_de_passe_securise"
      database: 1
      sentinels: 192.168.1.10:26379,192.168.1.11:26379
      masterName: myMaster

Exemple de configuraton avec Lettuce :

jetcache:
  areaInCacheName: false
  remote:
    default:
      type: redis.lettuce
      keyConvertor: fastjson2
      valueEncoder: java
      valueDecoder: java
      poolConfig:
        minIdle: 10
        maxIdle: 50
        maxTotal: 100
      password: "mot_de_passe_securise"
      database: 0
      masterName: myMaster
      uri: redis-sentinel://${jetcache.remote.default.password}@192.168.1.10:26379,192.168.1.11:26379/?sentinelMasterId=${jetcache.remote.default.masterName}

Activation des fonctionnalités JetCache

Pour activer le mécanisme de cache, il est nécessaire d'ajouter des annotations spécifiques sur la classe principale de l'application Spring Boot.

  • @EnableCreateCacheAnnotation : Permet l'injection d'instances de cache via l'annotation @CreateCache.
  • @EnableMethodCache : Active le support du cache déclaratif sur les méthodes (AOP).
@SpringBootApplication
@EnableCreateCacheAnnotation
@EnableMethodCache(basePackages = "com.entreprise.projet.service")
public class CacheApplication {
    public static void main(String[] args) {
        SpringApplication.run(CacheApplication.class, args);
    }
}

Utilisation pratique des annotations de cache

Les annotations @Cached et @CacheUpdate permettent de gérer le cycle de vie des données en cache de manière transparente.

@Service
public class RapportService {

    private static final String CACHE_RAPPORT = "RapportMensuel";

    // Mise en cache du résultat de la méthode
    @Cached(name = CACHE_RAPPORT, key = "#idRapport", expire = 3600, cacheNullValue = false)
    public RapportDetail recupererRapport(Long idRapport) {
        // Logique métier pour extraire les données
        return rapportRepository.findById(idRapport);
    }

    // Mise à jour explicite du cache suite à une modification
    @CacheUpdate(name = CACHE_RAPPORT, key = "#rapport.id", value = "#rapport")
    public void mettreAJourRapport(RapportDetail rapport) {
        rapportRepository.save(rapport);
    }
    
    // Suppression du cache
    @CacheInvalidate(name = CACHE_RAPPORT, key = "#idRapport")
    public void supprimerRapport(Long idRapport) {
        rapportRepository.deleteById(idRapport);
    }
}

Étiquettes: JetCache Spring Boot Redis Jedis Lettuce

Publié le 17 juillet à 00h39