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:
(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:
Springboot prend en charge de nombreuses méthodes de mise en cache: redis, goyave, ehcahe, jcache, etc.
Expliquez la différence entre redis et ehcache:
Redis: Il s'agit d'un programme de course indépendant. Après l'installation seule, il est manipulé à l'aide de Jedis en Java. Parce qu'il est indépendant, si vous écrivez un programme de test unitaire, mettez des données dans Redis, puis écrivez un autre programme pour obtenir les données, vous pouvez obtenir les données. ,
EHCACH: Il est évidemment différent de Redis, il est lié aux programmes Java. Lorsque le programme Java est vivant, il est vivant. Par exemple, si vous écrivez un programme indépendant pour mettre des données, puis écrivez un programme indépendant pour obtenir des données, vous n'obtiendrez pas de données. Les données ne peuvent être obtenues que dans des programmes indépendants.
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 le 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:
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 **.
Explication détaillée des annotations de cache
@CacheConfig: il est principalement utilisé pour configurer certaines configurations de cache courantes qui seront utilisées dans cette classe. Ici @CacheConfig (cachenames = "utilisateurs"): le contenu renvoyé dans l'objet d'accès aux données est configuré pour être stocké dans l'objet Cache nommé utilisateurs. Nous pouvons également le définir directement via le propre nom de Cacheable de l'ensemble de cache sans utiliser cette annotation.
@Cacheable: La valeur de retour de la fonction FindByName configurée sera ajoutée au cache. Dans le même temps, lors de la requête, il ira d'abord du cache, et s'il n'existe pas, l'accès à la base de données sera initié. Cette annotation a principalement les paramètres suivants:
En plus des deux annotations utilisées ici, il existe également les annotations de base suivantes:
@Cacheput: configuré sur une fonction, il peut être mis en cache en fonction des paramètres et définit les conditions. Contrairement à @Cacheable, il appelle vraiment la fonction à chaque fois, il est donc principalement utilisé pour les opérations d'addition et de modification des données. Ses paramètres sont similaires à @Cacheable. Pour des fonctions spécifiques, veuillez vous référer à l'analyse ci-dessus des paramètres @cacheables.
@Cacheevict: configuré sur des fonctions, généralement utilisées dans les méthodes de suppression, pour supprimer les données correspondantes du cache. En plus des mêmes paramètres que @Cacheable, il a les deux paramètres suivants:
Ce qui précède est tout le contenu de cet article. J'espère que cela sera utile à l'apprentissage de tous et j'espère que tout le monde soutiendra davantage Wulin.com.