Ehcache ist ein reines Java-In-Prozess-Caching-Framework mit schnellen und schlanken Funktionen und standardmäßig CacheProvider in Hibernate.
EHCACHE bietet eine Vielzahl von Caching -Strategien, die hauptsächlich in Speicher- und Festplattenniveaus unterteilt sind. Daher müssen sich keine Sorgen um Kapazitätsprobleme machen.
Spring-Boot ist ein schnelles Integrationsrahmen, mit dem der anfängliche Konstruktions- und Entwicklungsprozess neuer Spring-Anwendungen vereinfacht wird. Das Framework verwendet eine spezifische Möglichkeit, es zu konfigurieren, damit Entwickler keine Kesselplattenkonfigurationen mehr definieren müssen.
Da für Spring-Boot keine Boilerplate-Konfigurationsdateien erforderlich sind, unterscheidet sich Spring-Boot bei der Integration einiger anderer Frameworks geringfügig.
1.Spring-Boot ist ein Rahmen für JAR-Pakete, die über Maven verwaltet werden. Die für die Integration erforderlichen Abhängigkeiten sind wie folgt wie folgt
<dependency> <groupId>org.springframework</groupId> <artifactId>spring-context-support</artifactId></dependency><dependency> <groupId>net.sf.ehcache</groupId> <artifactId>ehcache</artifactId> <version>2.8.3</version></dependency>
Die spezifische POM.xml -Datei lautet wie folgt
<? 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> <groupId>com.lclc.boot</groupId> <artifactId>boot-cache</artifactId> <version> 0.0.1-Snapshot </Version> <!-Erben Standardeinstellungen aus Spring Boot-> <Stopper <gruppe> org.springFramework.boot </GroupId> <artifactID> Spring-Boot-Starter-Parent </artifactId> <version> 1.1.3. <gruppeId> org.springFramework.boot </GroupId> <artifactId> Spring-Boot-Starter-Web </artifactId> </abhängig> <abhängigkeit> <gruppe> org.springFramework <gruppeId> org.springframework.boot </GroupId> <artifactId> Spring-Boot-Starter-Thymeleaf </artifactId> </abhängig> <depectIncy> <Groupid> Mysql </Groupid> <artifactId> Mysql-connector-Java </artifactid> </abhängig> </abhängig> </abhängig> </abhängig> </artifactId <groupId>com.google.guava</groupId> <artifactId>guava</artifactId> <version>17.0</version> </dependency> <dependency> <groupId>org.sspringframework</groupId> <artifactId>spring-context-support</artifactId> </dependency> <dependency> <groupId>net.sf.ehcache</groupId> <artifactId>ehcache</artifactId> <version>2.8.3</version> </dependency> </dependencies> <dependencyManagement> <dependencies> </dependencies> </dependencies> </dependencies> </dependencies> </dependencies> </dependencies> </dependencies> <build> <plugins> <SupructId> org.springFramework.boot </GroupId> <artifactID> Spring-Boot-Maven-Plugin </artifactId> </plugin> </plugins> </build> <repositories> <Prepository> <id> Spring-Snapshots </id> <url> http://repo.sping.io/snapshoti// <snapshots> <enabled>true</enabled> </snapshots> </repository> <repository> <id>spring-milestones</id> <url>http://repo.spring.io/milestone</url> </repository> </repository> </repository> <pluginRepository> <pluginRepository> <ID> Spring-Snapshots </id> <URL> http://repo.spring.io/snapshot </url> </pluginRepository> <pluginRepository> <id> Spring-milestones </id> <url> http://repo.sspring.io. </pluginRepositories> </project>
2. Mit EHCache benötigen wir EHCache.xml, um einige Cache -Attribute zu definieren.
<? <diskStore path = "java.io.tmpdir /tmp_ehcache" /> <defaultCache eternal = "False" MaxelementSinMemory = "1000" ÜberlaufeTodisk = "false" diskPersistent = "false" memeetoidleseconds = "0" -Inalives -Löwen -Löwen- name = "Demo" eternal = "false" maxelementSinMemory = "100" overflowtodisk = "false" diskPersistent = "False" TimetoidleSeconds = "0" TimetoliveSeconds = "300" MemorySevictionPolicy = "lRU" /> < /ähcache>
Erläutern Sie die Tags in dieser XML -Datei.
(1) .DiskStore: Ist der Cache -Pfad, EHCache ist in zwei Ebenen unterteilt: Speicher und Festplatte. Diese Eigenschaft definiert den Cache -Ort der Festplatte. Die Parameter werden wie folgt erklärt:
User.Home User Home Directory User
(2) .DefaultCache: Die Standard -Cache -Richtlinie. Wenn EHCache den definierten Cache nicht finden kann, wird diese Cache -Richtlinie verwendet. Nur einer kann definiert werden.
(3) .Cache: benutzerdefinierte Cache -Richtlinie, eine benutzerdefinierte Cache -Richtlinie. Die Parameter werden wie folgt erklärt:
Eigenschaften des Cache -Elements:
Name: Cache -Name
MaxelementSinMemory: Maximale Anzahl zwischengespeicherter Objekte im Speicher
MaxelementsDisk: Die maximale Anzahl von zwischengespeicherten Objekten in der Festplatte. Wenn es 0 ist, bedeutet es Unendlichkeit
Ewig: Richtig bedeutet, dass das Objekt niemals abläuft. Zu diesem Zeitpunkt werden die Timetoidlese -Sekunden und TimetoliveSeconds -Eigenschaften ignoriert, und der Standard ist falsch
Überlauf: TRUE: Wenn die Anzahl der im Speicher zwischengespeicherten Objekte die MaxelementSinMemory -Grenze erreicht, werden die überflüssigen Objekte in den Festplatten -Cache geschrieben. 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 das virtuelle Maschinendaten während der Daten neu gestartet werden soll
DiskexpirythreadintervalsEconds: Disk -Fehler -Thread -Laufzeitintervall, Standardeinstellung beträgt 120 Sekunden
TIMETOIDLESECONDS: Legt die maximale Zeit fest, damit das Objekt in Sekunden im Leerlauf stehen kann. 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 Eigenschaftswert 0 ist, bedeutet dies, dass das Objekt auf unbestimmte Zeit im Leerlauf sein kann
TimetoliveSeconds: Legt die maximale Zeit fest, die das Objekt in Sekunden 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 Timetoidleseconds -Eigenschaft, um Sinn zu machen
MEHRSPOREVICTICTPOLICY: Wenn die MaxelementSinMemory -Grenze erreicht ist, säubert EHCACHE den Speicher gemäß der angegebenen Richtlinie. Optionale Richtlinien sind: LRU (jüngste kürzlich verwendete, Standardrichtlinie), FIFO (zuerst in, zuerst heraus) und LFU (Mindestanzahl von Besuchen).
3. Setzen Sie den EHCACHE -Manager dem Spring Context Container aus.
@Configuration // Die Annotation startet die cache @enableCachingPublic -Klasse CacheConfiguration {/** EHCACHE Hauptmanager*/ @bean (name = "appehcacheCacheManager") public ehcacheCacheManager EhcacheCacheManager (ehcachemanagern: } / * * Gemäß den Einstellungen von gemeinsam genutzten oder nicht, erstellt Spring eine EHCACHE -Basis über CacheManager.create () bzw. neuer CacheManager (). */ @Bean public EhCACHEMANAGERFACTORYBEAN EHCACHEMANAGERFACTORYBEAN () {EHCACHEMANATERFACTORTORYBEAN CACHEMANATERFACTORTORYBEAN = NEW EHCACHEMANATEFACTORTORYBEAN (); CACHEMANAGERFACTORYBEAN.SETCONFIGLOCATION (New ClassPathresource ("conf/ehcache-app.xml")); CacheManagerFactoryBean.Setshared (wahr); Rückkehr CacheManagerFactoryBean; }}@Configuration: Annotiert für Spring-Boot, hauptsächlich als Konfigurationsklasse kommentiert, und dem Scannen wird Priorität gegeben.
@Bean: Bohne in den Frühlingsbehälter hinzufügen.
Alle Konfigurationen werden bisher durchgeführt, und das Integrieren des Frameworks durch Spring-Boot ist so einfach.
4. Verwenden Sie EHCache
Die Verwendung von EHCache erfolgt hauptsächlich durch den Feder -Cache -Mechanismus. Wir haben den Feder -Cache -Mechanismus mit EHCache implementiert, sodass wir den Feder -Cache -Mechanismus vollständig in Bezug auf die Verwendung verwenden können.
Einige Notizen sind beteiligt:
@Cacheable: Verantwortlich für das Hinzufügen des Rückgabewerts der Methode zum Cache, Parameter 3
@Cacheevict: verantwortlich für das Löschen von Cache, Parameter 4
Parameter Erläuterung:
Wert: Der Name des Cache -Standorts kann nicht leer sein. Wenn EHCache verwendet wird, ist es der Name des in ehcache.xml deklarierten Cache
Schlüssel: Der zwischengespeicherte Schlüssel, Standard ist leer, dh den Parametertyp und Parameterwert der als Schlüssel verwendeten Methode und unterstützt SPEL
Bedingung: Auslöser Zustand, nur wenn der Zustand erfüllt ist, wird dem Cache hinzugefügt. Die Standardeinstellung ist leer, was bedeutet, dass alle von ihnen zum Cache hinzugefügt werden und Spel unterstützt
Allentrennen: Cacheevict -Parameter, wahre bedeutet, alle Caches im Wert zu beseitigen, Standard ist falsch
Laden Sie ohne weiteres den Code hoch:
@ServicePublic Class CacheDemoServiceImpl implementiert CacheDemoService {/** * Cache -Schlüssel */public static Final String ting_all_key = "/" Thing_All/""; /*** Das Wertattribut gibt an, welche Cache -Richtlinie verwendet werden soll. Die Cache -Richtlinie ist in ehcache.xml */ public static Final String Demo_Cache_Name = "Demo"; @Cacheevict (value = Demo_Cache_Name, Key = tingen_all_key) @Override public void create (Thing Thing) {Long id = getNextId (); ting.setid (id); Data.put (id, Sache); } @Cacheable (value = Demo_cache_name, Key = "#Thing.getId () + 'Thing'") @Override öffentliche Dinge findById (Long id) {System.err.println ("no cache!" + Id); return data.get (id); } @Cacheable (value = Demo_Cache_Name, Key = tingen_all_key) @Override publiclist <ing> 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 Was Update (Thing Thing) {System.out.println (Thing); Data.put (Thing.getId (), Sache); Rückkehrsding; } @Cacheevict (value = Demo_Cache_Name) @Override public void delete (Long id) {data.remove (id); }}5. Sie müssen nur die Service -Layer -Methode über Annotationen kommentieren und den Cache verwenden, den Cache auf Find ** speichern und den Cache auf Löschen ** und aktualisieren ** löschen.
Zusammenfassen
Die oben genannte Methode ist die Methode zur Integration von EHCACHE zur Implementierung des vom Editor eingeführten Caching-Mechanismus. Ich hoffe, es wird für alle hilfreich sein. Wenn Sie Fragen haben, hinterlassen Sie mir bitte eine Nachricht und der Editor wird allen rechtzeitig antworten. Vielen Dank für Ihre Unterstützung auf der Wulin.com -Website!