Ehcache est un cadre de mise en cache Java en Java pur, avec des fonctionnalités rapides et maigres, et est le cacheprovider par défaut en hibernate.
Ehcache fournit une variété de stratégies de mise en cache, principalement divisées en niveaux de mémoire et de disque, il n'est donc pas nécessaire de se soucier des problèmes de capacité.
Spring-Boot est un cadre d'intégration rapide conçu pour simplifier le processus initial de construction et de développement des nouvelles applications de printemps. Le framework utilise un moyen spécifique de le configurer, afin que les développeurs n'aient plus besoin de définir des configurations de chaudières.
Étant donné que Spring-Boot ne nécessite aucun fichier de configuration de passe-partout, Spring-Boot sera légèrement différent lors de l'intégration d'autres cadres.
1.Spring-boot est un cadre pour les packages JAR gérés via Maven. Les dépendances requises pour intégrer ehcache sont les suivantes
<dependency> <proupId> org.springFramework </proupId> <Ertifactid> Spring-Context-Support </ Artifactid> </Dependency> <Dependency> <ProupId> net.sf.ehcache </proupId> <Ertifactid> ehcache </ artifactid> <version> 2.8.3 </-version> </Dedency>
Le fichier POM.xml spécifique est le suivant
<? xml version = "1.0" Encoding = "utf-8"?> <project xmlns = "http://maven.apache.org/pom/4.0.0" xmlns: xsi = "http://www.w3.org/2001/xmlschema-instance" XSI: ScheMalocation = "http://maven.apache.org/pom/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> <Modelversion> 4.0.0 </ Modelversion> <proupId> COMACTID> BOOCK <version> 0.0.1-snapshot </-version> <! - Hériter par défaut de Spring Boot -> <parent> <proupId> org.springframework.boot </proncId> <Artifactid> printemps-boot-starter-Parent </letetences> <Detency> <GroupId> org.springframework.boot </proupId> <Ertifactid> printemps-boot-starter-web </ artifactid> </dendency> <dependency> <proupId> org.springframework.boot </proupatid> <Artifactid> printemps-boot-starter-data-jpa </ artifactid> <GroupId> org.springframework.boot </prôdId> <Ertifactive> printemps-boot-starter-thymeleaf </ artifactid> </dependency> <dependency> <proupId> mysql </proupId> <prefactid> mysql-connector-java </ artifactid> </pedency> <pedency> <GroupId> com.google.guava </prôdId> <Artifactid> Guava </ ArtifactId> <DersonD> 17.0 </ Version> </Dependency> <Dedency> <ProupId> Org.SspringFramework </proupdicy> <Ertifactid> Spring-context-soupport </ artifactid> </dependency> <petency> <GroupId> net.sf.ehcache </proupId> <Artifactid> ehcache </retifactid> <version> 2.8.3 </pterences> </Dedency> </Detences> <DependencyManagement> <Detendances> </Dedencys> </Detencys> </Dedency> </Dedensences> </Detences> </Detency> </Detencescs> <build> <frackeins> <GroupId> org.springframework.boot </proupId> <Ertifactid> printemps-boot-maven-plugin </lefactive> </dugin> </nigins> </ build> <fepositories> <fopostory> <id> Spring-Snapshots </id> <url> http://repo.spring.io/snaps <Snapshots> <veabled> true </ enable <Id> Spring-Snapshots </id> <url> http://repo.spring.io/snapshot </url> </GluginRepository> <GluginRepository> <id> Spring-Milestones </id> <url> http://repository> </ PluginRepositories> </propject>
2. En utilisant ehcache, nous avons besoin d'un ehcache.xml pour définir certains attributs de cache.
<? xml version = "1.0" Encoding = "utf-8"?> <ehcache xmlns: xsi = "http://www.w3.org/2001/xmlschema-instance" xsi: nonamespaceschemalation = "http://ehcache.org/ehcache.xsd" Toolecheck = " <diskstore path = "java.io.tmpdir / tmp_ehcache" /> <defaultCache eternal = "false" maxElementsInMemory = "1000" overflowtodisk = "false" diskpersistent = "false" TimeToidleSeconds = "0" timetoliveSeds = "600" MemoryStoreevictionpolicy = "LRU" /> <cacheds = "600" MemoryStoreevictionPolicy = "LRU" /> <cacheds = "600" MemoryStoreevictionpolicy = "LRU" /> <cacheds = " name = "Demo" eternal = "false" maxElementsInMemory = "100" overflowtodisk = "false" diskpersistent = "false" TimeToidleSeconds = "0" TIMETOLivesEconds = "300" MemoryStoreevictionPolicy = "LRU" /> </ehCache>
Expliquez les balises dans ce fichier XML.
(1) .Diskstore: Le chemin du cache est-il divisé en deux niveaux: mémoire et disque. Cette propriété définit l'emplacement du cache du disque. Les paramètres sont expliqués comme suit:
User.Home User Home Directory User.Dir User Current Working Directory Java.io.tmpdir Chemin de fichier temporaire par défaut
(2) .DefaultCache: la stratégie de cache par défaut. Lorsque ehcache ne peut pas trouver le cache défini, cette politique de cache sera utilisée. Un seul peut être défini.
(3) .cache: stratégie de cache personnalisée, une stratégie de cache personnalisée. Les paramètres sont expliqués comme suit:
Propriétés de l'élément de cache:
Nom: Nom du cache
MaxElementsInMemory: Nombre maximum d'objets mis en cache en mémoire
Maxelementsondisk: le nombre maximum d'objets mis en cache dans le disque dur. Si c'est 0, cela signifie l'infini
Éternel: le vrai signifie que l'objet ne s'expire jamais. À l'heure
OverflowTodisk: Vrai signifie que lorsque le nombre d'objets mis en cache dans la mémoire atteint la limite maxelementsInMemory, les objets débordés seront écrits dans le cache de disque dur. Remarque: Si l'objet mis en cache doit être écrit sur le disque dur, l'objet doit implémenter l'interface sérialisable.
DiskSpoolBuffeSizemb: Taille du cache de disque, la valeur par défaut est de 30 Mo. Chaque cache doit avoir sa propre zone de cache.
Diskpersistent: Il faut mettre en cache des données de redémarrage de la machine virtuelle pendant les données
DiskExpiryThreadIntervalSeconds: Intervalle de temps de fonctionnement du thread de discussion du disque, la valeur par défaut est de 120 secondes
TimeToidleSonds: définit le temps maximum pour permettre à l'objet d'être inactif, en quelques secondes. Lorsque l'objet a été accessible pour la dernière fois, si la valeur de propriété TimeToidleSonds dépasse la valeur de propriété TimeToidleSonds, l'objet expirera et ehcache le effacera à partir du cache. Cette propriété n'est valable que si la propriété éternelle est fausse. Si la valeur de la propriété est 0, cela signifie que l'objet peut être inactif indéfiniment
TIMETOLIVESECONDS: Définit le temps maximum que l'objet permet d'exister dans le cache, en quelques secondes. Lorsque l'objet a été stocké dans le cache, si le temps dans le cache dépasse la valeur de propriété TimeTolivesEnconds, l'objet expirera et ehcache le effacera à partir du cache. Cette propriété n'est valable que si la propriété éternelle est fausse. Si la valeur de la propriété est 0, cela signifie que l'objet peut exister indéfiniment dans le cache. TIMETOLIVESEcondes doivent être plus importantes que la propriété TimeToidleSonds pour avoir un sens
MemoryStoreevictionPolicy: Lorsque la limite maxelementsInMemory est atteinte, ehcache nettoiera la mémoire en fonction de la politique spécifiée. Les politiques facultatives sont: LRU (dernier récemment utilisé, politique par défaut), FIFO (First in, First Out) et LFU (nombre minimum de visites).
3. Exposez le gestionnaire ehcache au conteneur de contexte de ressort.
@ Configuration // L'annotation démarre le cache @EnableCachingPublic Class CacheConfiguration {/ * * ehcache Main Manager * / @Bean (name = "AppeHcachecacheManager") public ehcachecachemanager ehcachecachemanager (ehcacheManArfactoryBean Beeban) {RETOUR New EhcachecAcaReArfere ()); } / * * Selon les paramètres de partagé ou non, Spring crée une base ehcache via cacheManager.Create () ou New CacheManager () respectivement. * / @Bean public ehcacheManagerFactoryBean ehcacheManagerFactoryBean () {ehcacheManagerFactoryBean CacheManagerFactoryBean = new ehcacheManagerFactoryBean (); cacheManagerFactoryBean.setConfigLocation (new ClassPathResource ("conf / ehcache-app.xml")); CacheManagerFactoryBean.SetShared (true); retour CacheManagerFactoryBean; }}@Configuration: annoté pour Spring-Boot, principalement annoté en tant que classe de configuration, et la priorité est donnée à la numérisation.
@Bean: Ajoutez du bean au conteneur à ressort.
Toutes les configurations sont effectuées jusqu'à présent et l'intégration du cadre via Spring-Boot est aussi simple.
4. Utilisez ehcache
L'utilisation d'Ehcache est principalement par le mécanisme de cache de ressort. Nous avons implémenté le mécanisme de cache de ressort à l'aide d'EhCache, afin que nous puissions utiliser complètement le mécanisme de cache de ressort en termes d'utilisation.
Quelques notes sont impliquées:
@Cacheable: responsable de l'ajout de la valeur de retour de la méthode au cache, paramètre 3
@Cacheevict: responsable de la compensation du cache, paramètre 4
Explication des paramètres:
Valeur: le nom de l'emplacement du cache ne peut pas être vide. Si ehcache est utilisé, c'est le nom du cache déclaré dans ehcache.xml
Clé: la touche mise en cache, la valeur par défaut est vide, ce qui signifie le type de paramètre et la valeur du paramètre de la méthode utilisée comme clé, et prend en charge Spel
Condition: Condition de déclenchement, uniquement si la condition est remplie sera ajoutée au cache. La valeur par défaut est vide, ce qui signifie que toutes sont ajoutées au cache et prennent en charge Spel
AllEntries: Cacheevict Paramètre, True signifie effacer toutes les caches dans la valeur, la valeur par défaut est fausse
Sans plus tarder, téléchargez simplement le code:
@ServicePublic Class CacheDemoServiceIMPl implémente CacheDemoService {/ ** * Cache Key * / public static final String thing_all_key = "/" thing_all / ""; / ** * L'attribut de valeur indique la stratégie de cache à utiliser. La politique de cache est dans ehcache.xml * / public static final string Demo_cache_name = "Demo"; @Cacheevict (value = demo_cache_name, key = thing_all_key) @Override public void create (thing thing) {long id = getNextid (); thing.setid (id); data.put (id, chose); } @Cacheable (value = demo_cache_name, key = "# thing.getID () + 'thing'") @Override public Things FindById (long id) {System.err.println ("pas de cache!" + Id); return data.get (id); } @Cacheable (value = demo_cache_name, key = thing_all_key) @Override public list <Thing> findall () {return lists.newArrayList (data.values ()); } @Override @cacheput (value = demo_cache_name, key = "# thing.getID () + 'thing'") @cacheevict (value = DEMO_CACHE_NAME, key = thing_all_key) public what update (thing) {System.out.println (thing); data.put (Thing.getId (), Thing); Retour Thing; } @Cacheevict (value = DEMO_CACHE_NAME) @Override public void Delete (Long ID) {data.Remove (id); }}5. Vous n'avez qu'à annoter sur la méthode de la couche de service via des annotations et vous pouvez utiliser le cache, stocker le cache sur Find ** et effacer le cache sur Delete ** et mettre à jour **.
Résumer
Ce qui précède est la méthode de Spring-Boot intégrant EHCACH pour implémenter le mécanisme de mise en cache introduit par l'éditeur. J'espère que ce sera utile à tout le monde. Si vous avez des questions, veuillez me laisser un message et l'éditeur répondra à tout le monde à temps. Merci beaucoup pour votre soutien au site Web Wulin.com!