SpringBoot implementiert die Daten zwischen den Daten zwischen der Daten zwischen der AOP -Technologie von Spring auf der Annotationsebene. Alle Cache -Konfigurationen sind nur auf Annotationsebene wie deklarativen Transaktionen konfiguriert.
Spring definiert CacheManager- und Cache -Schnittstellen, um verschiedene Caching -Technologien zu vereinen. Unter ihnen ist CacheManager eine abstrakte Schnittstelle für verschiedene Caching -Technologien, die von Frühling bereitgestellt werden. Die Cache -Schnittstelle enthält verschiedene Cache -Operationen.
Cachemanger
Für verschiedene Cache -Technologien müssen verschiedene Cachemanagers implementiert werden. Spring definiert die folgende Cachemanger -Implementierung.
| Cachemanger | beschreiben |
|---|---|
| SimpleCacheManager | Verwenden Sie eine einfache Sammlung, um Caches zu speichern, hauptsächlich zum Testen |
| ConcurrentMapcacheManager | Verwenden Sie ConcurrentMap als Cache -Technologie (Standard) (Standard) |
| NoopcacheManager | Zum Testen |
| EhcacheCacheManager | EHCACHE wird als Cache -Technologie verwendet und wurde früher oft beim Winterschlaf verwendet |
| GuavacacheManager | Guavacache mit Google Guava als Caching -Technologie |
| HazelcastcacheManager | Verwenden von Hazelcast als Caching -Technik |
| JCacheCacheManager | Implementierung mit JCache -Standard als Caching -Techniken wie Apache Commons JCS |
| RediscaCheemanager | Verwendung von Redis als Caching -Technologie |
Der reguläre Springboot hat EHCache, Sammlung, Guava, ConcurrentMap und andere Caches für uns automatisch konfiguriert, und die ConcurrentMapCacheManager wird standardmäßig verwendet. Die Konfigurationsdatei von SpringBoots application.Properties, konfiguriert mit den Eigenschaften des Präfixes für Spring.cache.
Anwendungskonfiguration
spring.cache.type =#zwischen dem technischen Typ spring.cache.cache-names = Der Name der Anwendung startet, den Cache zu erstellen. Implementierungsklasse von JCache, wenn mehrere JCache -Implementierungsklassen klassen
Eingabetokonfiguration
Annotation @enableScaching hinzufügen
Cache -Annotation
| Anmerkung | beschreiben |
|---|---|
| @Cacheable | Bevor Sie eine Methode aufrufen, sollten Sie zunächst nach dem Rückgabewert der Methode im Cache suchen. Wenn dieser Wert gefunden werden kann, wird der zwischengespeicherte Wert zurückgegeben. Andernfalls wird diese Methode aufgerufen und der Rückgabewert wird in den Cache platziert. |
| @Cacheput | Legen Sie den Rückgabewert der Methode in den Cache. Der Cache wird nicht überprüft, bevor die Methode aufgerufen wird, und die Methode wird immer aufgerufen. |
| @Cacheevict | Löschen Sie einen oder mehrere Einträge im Cache. |
| @Caching | Gruppierte Anmerkungen können gleichzeitig mehrere andere Cache -Anmerkungen angewendet werden. |
Verwenden Sie EHCache manuell
Während des tatsächlichen Entwicklungsprozesses gibt es eine Situation, in der keine Anmerkungen verwendet werden und Sie selbst einen Cache hinzufügen müssen. Nehmen wir EHCache als Beispiel und schreiben Sie den Konfigurationsprozess kurz auf.
1. Fügen Sie Abhängigkeiten hinzu
Führen Sie Springboot-Cache und EHCache ein. Es ist zu beachten, dass EHCache keine Versionskonfiguration erfordert und der Root -Pom von Springboot integriert wurde.
<!-cache-> <depeopecy> <GroupId> org.springFramework
2. Konfiguration der Eingangsklasse
Annotation @enableScaching hinzufügen
@SpringbootApplication@EnableCachingPublic Class DemoApplication {} 3. EHCACHE -Konfiguration
Fügen Sie im Verzeichnis SRC/Main/Ressourcen die Datei ehcache.xml hinzu, siehe den Inhalt am Ende des Artikels.
4. Anwendung.Application -Konfiguration
# Konfigurieren Sie EHCache Cache spring.cache.type = ehcache# Geben Sie den Pfad der EHCache -Konfigurationsdatei Spring.cache.ehcache.config = classPath: /eHcache.xml an.
5. Cache verwenden
Inject Springboots automatisch konfigurierte Bean, org.springframework.cache.cachemanager.
Eine einfache Testklasse:
Paket com.bbf.frame.test; import com.bbf.frame.application; import org.apache.commons.lang3.stringutils; import org.junit.test; import org.junit.runner.runwith; org.springframework.cache.cache; import org.springframework.cache.cachemanager; import org.springframework.test.context.junit4.springjunit4ClasRunner; import org.springframework.test.test.web.web.Web.Web.Web.Web.Web.Web.Web.Web.Web.Web.Web.Web.Web.Web.Web.Web.Web.Web.Web.Web.Web.Web.Web.Web.Webappconfiguration; javax.annotation.resource; @runwith (SpringJunit4ClASSRunner.class)@webappconfiguration@SpringBoottest (classes = application.class, WebEnvironment = SpringBoottest.Webenvironment.Mock) öffentlicher Klassen testcache {resource private cachemanager CacheManager; @Test public void cachetest () {// Alle Cache Spaces System.out.println (Stringutils.join (CacheManager.getCacheNames (), ",", ")); Cache Cache = CacheManager.getCache ("UserCache"); Cache.put ("Schlüssel", "123"); System.out.println ("Cache -Erfolg"); String res = cache.get ("key", string.class); System.out.println (res); }} Anhang EHCache.xml
<? <!- Geben Sie ein Dateiverzeichnis an. Wenn EHCache Daten auf die Festplatte schreibt, werden die Daten in dieses Dateiverzeichnis geschrieben-> <diskstore path = "java.io.tmpdir"/> <!-Standard-Management-Richtlinie-> <defaultCache eternal = "false" maxelementsInmemory = "10000" überlaufen timetoliveSeconds = "120" DiskexpiryThreadIntervalseconds = "120" MemorySevictionPolicy = "LRU"/> <!- Dieser Cache kann bis zu TimetoliveSeconds Sekunden überleben. Wenn die Periode die Timetoidlese-Sekunden überschreitet und der Cache ungültig ist-> <cache name = "usercache" eternal = "false" maxelementssinmemory = "100" überlaufen Überlauf = "false" diskPersistent = "False" TimetoidleSeconds = "120 Timetolivesconds =" 180 "Memaitestoresevictions =" 120). MaxelementSinMemory Die maximale Anzahl von zwischengespeicherten Objekten im Gedächtnis, schauen Sie sich Ihre Haufengröße an-> <!-Ewig: Richtig bedeutet, dass das Objekt niemals abläuft. Zu diesem Zeitpunkt werden die Timetoidlese-Sekunden und TimetoliveSeconds-Eigenschaften ignoriert, und die Standardeinstellung ist falsch-> <!-MaxelementsDisk: Die maximale Anzahl von zwischengespeicherten Objekten in der Festplatte bedeutet, wenn 0 Unendlichkeit bedeutet-> <!-Überlauf. Der Festplatten -Cache. Hinweis: Wenn das zwischengespeicherte Objekt an die Festplatte geschrieben werden soll, muss das Objekt die serialisierbare Schnittstelle implementieren. -> <!-diskSpoolBufferSizemb: Disk-Cache-Größe, Standard ist 30 MB. Jeder Cache sollte seinen eigenen Cache -Bereich haben. -> <!-diskpersistent: ob virtuelle Maschine Daten neu starten-> <!-Diskexpirythreadintervalseconds: Der Laufzeitintervall des Festplattenfehlers beträgt die Standardzeit 120 Sekunden-> <!-Timetoidleseconds: Legt die maximale Zeit fest, um das Objekt zuzulassen, dass das Objekt in Sekundenschnitte untätig ist. Wenn auf das Objekt zum letzten Mal zugegriffen wurde, läuft das Objekt aus dem Eigenschaftswert von Timetoidleseconds, wenn der Eigentumswert von Timetoidleseconds überschreitet, und der EHCache löscht ihn aus dem Cache. Diese Eigenschaft ist nur gültig, wenn die ewige Eigenschaft falsch ist. Wenn der Wert dieser Eigenschaft 0 beträgt, bedeutet dies, dass das Objekt auf unbestimmte Zeit im Leerlauf sein kann-> <!-TimetoliveSeconds: Legt die maximale Zeit fest, die das Objekt in Sekundenschnelle im Cache existieren kann. Wenn das Objekt im Cache gespeichert wurde, läuft das Objekt aus dem Eigenschaftswert des Timetoliveseconds, wenn die Zeit im Cache den TimetoliveSeconds -Eigenschaft überschreitet, und EHCACHE löscht es aus dem Cache. Diese Eigenschaft ist nur gültig, wenn die ewige Eigenschaft falsch ist. Wenn der Eigenschaftswert 0 ist, bedeutet dies, dass das Objekt im Cache auf unbestimmte Zeit existieren kann. TimetoliveSeconds müssen größer sein als die Timetoidlese-Sekunden-Eigenschaft, um Sinn zu machen-> <!-MEHLERSCHAFTEVICTICTPOLICY: Wenn die MaxelementSinMemory-Grenze erreicht wird, wird EHCache gemäß der angegebenen Richtlinie aufräumen. Optionale Richtlinien sind: LRU (jüngste kürzlich verwendete, Standardrichtlinie), FIFO (zuerst in, zuerst heraus) und LFU (Mindestanzahl von Besuchen). -> </ehcache>
Das obige ist der gesamte Inhalt dieses Artikels. Ich hoffe, es wird für das Lernen aller hilfreich sein und ich hoffe, jeder wird Wulin.com mehr unterstützen.