English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

Fournisseurs de cache SpringBoot

Le cadre de travail SpringBoot permet d'intégrer divers fournisseur de cachepar exemple EhCache, Redis, Hazelcast, Infinispan, Caffeine,etc. Les fournisseurs de cache permettent aux développeurs de configurer le cache de manière transparente et explicite dans l'application. Nous devrions utiliser le cache car il réduit le nombre d'exécutions et améliore les performances de l'application.

Dans le guide de Spring, l'abstraction de cache n'offre pas d'espace de cache réel. Cela dépend org.springframework.cache.Cache ou org.springframework.cache.CacheManager l'abstraction de l'interface.

Configuration automatique du cache

Le cadre de travail Spring Boot simplifie l'implémentation du cache via la configuration automatique. Il recherche les bibliothèques et les fichiers de configuration dans le chemin de classe et initialise les dépendances Bean nécessaires au démarrage de l'application. La configuration automatique du cache comprend les étapes suivantes:

ajoutez les annotations dans le fichier de configuration @EnableCaching . ajoutez les bibliothèques nécessaires dans le chemin de classebibliothèque de cache. dans le répertoire racine du chemin de classe, ajoutezfichier de configuration.

Par exemple, si nous devons réaliser EhCache ,d'abord, nous activons le cache dans le fichier de configuration.

@SpringBootApplication
@EnableCaching
public class Employee
{
@Bean
public CacheManager cacheManager()
{
//some code
}
}

dans pom.xml ajouter au fichier EhCache dépendances. Il ajoute les bibliothèques nécessaires au chemin de classe.

<dependency>
<groupId>org.ehcache</groupId>
<artifactId>ehcache</artifactId>
</dependency>

Enfin, configurez le fichier de configuration du fournisseur de cache. Ici, nous utilisons EhCache, donc nous devons configurer ehcache.xml fichier.

lorsque nous n'avons pas défini bean qui utilisera le cache générique. org.springframework.cache.Cache.Cache ou CacheResolver ,Le cadre de travail Spring Boot essaie de détecter les programmes de fourniture de cache suivants:

Generic JCache EhCache Hazelcast Infinispan Couchbase Redis Caffeine Simple

Si Spring Boot trouve plusieurs fournisseurs de cache dans le chemin d'accès de la classe, dans ce cas, nous devons dans}} application.properties spécifier explicitement le fournisseur de cache dans le fichier

spring.cache.ehcache.provider=net.sf.ehcache.CacheManager
spring.cache.ehcache.config=classpath:config/another-config.xml

Nous pouvons utiliser la propriété spring.cache.type Configurer un fournisseur de cache spécifique. Si vous souhaitez désactiver le cache, utilisez-le dans un environnement spécifique.

spring.cache.type=none

Le Framework Spring Boot fournit une dépendance de démarrage, qui ajoute des dépendances de base de cache dans l'application. Par défaut, la dépendance de démarrage de cache fournit spring-context-support dépendance dans le fichier pom.xml.

Attention: Si nous ajoutons manuellement la dépendance de cache, nous devons inclure spring-context-support dépendance. Car, il fournit une prise en charge de Jcache, EhCache et Caffiene.
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-context-support</artifactId>
<version>5.2.3.RELEASE</version>
</dependency>

Le Framework Spring Boot automatise la configuration de CacheManager, en implémentant CacheManagerCustomizer L'interface le personnalisant davantage.

Dans l'exemple suivant, nous avons configuré un marqueur de passage pour la valeur principale vide.

@Bean
public  CacheManagerCustomizer<ConcurrentMapCacheManager>  cacheManagerCustomizer() 
{
return  new  CacheManagerCustomizer<ConcurrentMapCacheManager>() 
{
@Override
public  void  customize(ConcurrentMapCacheManager  cacheManager) 
{
cacheManager.setAllowNullValues(false);
}
};
}

Le bean ci-dessus nécessite une configuration automatique de ConcurrentMapCacheManager Si ConcurrentMapCacheManager n'est pas configuré automatiquement, le personnalisateur ne appellera pas de manière alguna. Nous pouvons utiliser un nombre quelconque de programmes personnalisés et utiliser les annotations @Order ou @Ordered.

Cache générique

Si spring-context-support定义了至少一个 context support définit au moins un bean qui utilisera le cache générique. org.springframework.cache.Cache.Cache lié et configuré avec tous les bean. CacheManager

JCache

JCache est javax.cache.spi.CahingProviderIl est situé dans le chemin de classes JSR 107dans.-boot-starter-fourni par JCacheCacheManagerNous pouvons également ajouter d'autres bibliothèques de cache.

Attention: Si la bibliothèque de cache fournit à la fois une implémentation native et le support JSR, Spring Boot préfère le support JSR.

EhCache 2.x

EHCache est une bibliothèque open source basée sur Java largement utilisée. Pour utiliser EhCache, nous devons utiliser les dépendances suivantes.

<dependency>
<groupId>org.ehcache</groupId>
<artifactId>ehcache</artifactId>
</dependency>

Il y a deux méthodes pour configurer EhCache:

Premièrement, en configurant le fichier Java POJO (où tous les paramètres de configuration sont définis via l'API EhCache). Deuxièmement, en configurant le fichier XML, nous configurons EhCache en fonction de la définition de l'architecture fournie.

EhCache utilise un nom de fichier le fichier ehcache.xml. si l'application trouve le fichier sur le chemin de classes, c'est pour spring-boot-starter-fourni par EhCacheCacheManager 。Nous pouvons configurer le fichier XML suivant avec les propriétés suivantes:

spring.cache.ehcache.config=classpath:config/demo-config.xml

Hazelcast

Lorsque nous activons le cache dans l'application, Spring Boot configure automatiquement HazelcastInstance emballé dans CacheManager. Il répartit en moyenne les données entre les nœuds. Nous pouvons utiliser les propriétés suivantes pour configurer Hazelcast.

spring.hazelcast.config=classpath:config/demo-hazelcast.xml

Si cette propriété n'est pas définie, Spring Boot essaiera de trouver dans le chemin de classes hazelcast.xml (fichier de configuration Hazelcast)。

Infinispan

Infinispan est une bibliothèque Java embarquée. Elle est utilisée comme Cacheou Réseau de donnéesClé-valeurLe stockage des données sous forme de fichiers. Il peut être facilement utilisé avec JCache, JPA Quarkus, Spring, etc.

il n'a pas de chemin par défaut par défaut, donc nous devrions le spécifier explicitement. Si infinispan n'est pas spécifié explicitement, il utilisera le lanceur par défaut.

spring.cache.infinispan.config=infinispan.xml

Couchbase

lorsque nous implémentons couchbase-spring-cache et Couchbase est configuré, il se configure automatiquement CouchebaseCacheManager . Toutes les opérations liées au cache se produisent dans Bucket dans lequel il s'exécute. Il nous permet de créer d'autres réservoirs en définissant les propriétés spring.cache.cache-nom pour créer d'autres caches (si nécessaire).

Le programme personnalisé nous permet de créer d'autres réservoirs où un autre cache peut être créé.

Laissez-nous voir un exemple pour comprendre ces concepts.

supposons que nous devions avoir trois caches nommés cacheA , cacheB,et cacheC . cacheA et cacheB sont situés sur le réservoir principal (c'est-à-dire le réservoir configuré automatiquement) sur. cacheC est sur un autre réservoir, qui peut survivre quelques secondes, par exemple4secondes. Par conséquent, nous pouvons créer cacheA et cacheB en spécifiant les propriétés, comme suit :

spring.cache.cache-names=cacheA, cacheB

Redis

lorsque nous configurons Redis quand il est utilisé, il se configure automatiquement RedisCacheManager . Il nous permet également d'utiliser les propriétés spring.cache.cache-names créer d'autres caches. Nous pouvons utiliser les propriétés spring.cache.redis.* pour réaliser la configuration par défaut.

Nous pouvons utiliser RedisCacheConfiguration contrôle complet de la configuration par défaut. > grain.

spring.cache.cache-names=cacheA, cacheB
spring.cache.redis.time-to-live=100000

Les propriétés ci-dessus configurent deux caches, respectivement appelés cacheA et cacheB, avec une durée de vie de10minutes.

Caffeine

Caffeine est une bibliothèque de cache basée sur Java. Elle fournit également un cache en mémoire. Si spring-boot-starter-Le cache dépendant a trouvé Caffeine dans la classe de chemin, il se configure automatiquement CaffeineCacheManger Si vous souhaitez utiliser Caffeine dans votre application, vous devez ajouter les dépendances suivantes :

<dependency>
<groupId>com.github.ben-manes.caffeine</groupId>
<artifactId>caffeine</artifactId>
<version>2.7.0</version>
</dependency>

Avec le cache à caféine, nous pouvons utiliser les propriétés spring.cache.caffeine.spec définit les attributs de cacheTailleetDurée de vie. Par exemple:

spring.cache.cache-names=cacheA,cacheB
spring.cache.caffeine.spec=maximumSize=500,expireAfterAccess=600s

La configuration ci-dessus crée deux caches nommés cache1et cache2du cache. La taille maximale du cache est 500 La durée de vie maximale est de 6 secondes.

Simple

C'est l'implémentation par défaut. Si aucun fournisseur de cache n'est spécifié. Si Spring Boot ne trouve aucun fournisseur de cache sur la classepath, alors ConcurrentHashMap Configurer comme stockage de cache.

Par exemple, si nous avons besoin de deux caches, veuillez utiliser pour les nommer. Les propriétés suivantes:

spring.cache.cache-names=cache1,cache2

None

Lorsque nous utilisons l'annotation @EnableCaching pour activer le cache, l'application nécessite une configuration appropriée. Lorsque nous devons dans un environnement spécifique DésactiverUtiliser le cache. Nous utilisons les propriétés spring.cache.type Désactiver le cache.

spring.cache.type=none