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);
}
}