Ehcache adalah kerangka kerja caching java dalam proses murni, dengan fitur cepat dan ramping, dan merupakan cacheeprovider default di Hibernate.
Ehcache menyediakan berbagai strategi caching, terutama dibagi menjadi tingkat memori dan disk, sehingga tidak perlu khawatir tentang masalah kapasitas.
Spring-Boot adalah kerangka kerja integrasi cepat yang dirancang untuk menyederhanakan proses konstruksi dan pengembangan awal aplikasi musim semi baru. Kerangka kerja menggunakan cara tertentu untuk mengonfigurasinya, sehingga pengembang tidak perlu lagi mendefinisikan konfigurasi boilerplate.
Karena Spring-Boot tidak memerlukan file konfigurasi boilerplate, boot spring akan sedikit berbeda ketika mengintegrasikan beberapa kerangka kerja lainnya.
1.spring-boot adalah kerangka kerja untuk paket toples yang dikelola melalui Maven. Ketergantungan yang diperlukan untuk mengintegrasikan ehcache adalah sebagai berikut
<dependency> <GroupId> org.springframework </groupId> <ArTifactId> SPRING-CONTEXT-SUPPORT </artifactid> </dependency> <dependency> <groupid> net.sf.ehcache </groupid> <ArTifactId> ehcache </artifactId> <versi> 2.8.3 </versi> </versi> </versi> </versi> </versi> </versi> </versi> </versi> </versi> </versi> </artifacteD> </versi> </versi> </versi> </versi> </versi> </versi> </versi> </versi> </versi> </versi> </versi </artifactid>
File pom.xml spesifik adalah sebagai berikut
<? 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 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 <version> 0.0.1-Snapshot </version> <!-Warisan default dari boot musim semi-> <parent> <groupid> org.springframework.boot </groupid> <Artifactid> Spring-boot-starter-parent </artifactid> <version> 1.1.3.release </version> </Parent> </ArtifactId> <versi> 1.1.3.release </Version> </Parent> </ArtifactId> <versi> 1.1.3.release </Version> </Parent> </artifactid> <versi> 1.1.3.release </Version> </Parent> <groupid> org.springframework.boot </sroupid> <ArtiFacTId> Spring-boot-starter-web </arttifactid> </gandendency> <Arpendency> <Groupid> org.springframework.boot </groupid> <Artifactid> SPRING-BOT-BOTTER-SATTER-DATA-JSA-JACHPA </Groupid> <ArTifactid> <groupId> org.springframework.boot </groupid> <ArtifactId> Spring-boot-starter-thymeleaf </artifactid> </ganden> <dependency> <Groupid> MySQL </sroupid> <ArtifactId> MySQL-Connector-Connector-java </Artifactid> </Artifactid> MySQL-Connector-java </Artifactid> <GroupId> com.google.guava </groupid> <Artifactid> jambu </artifactid> <version> 17.0 </version> </gandendency> <dependency> <groupid> org.sspringframework </groupid> <Artifactid> SPRING-Context-pupport </arttifacheCh> </groupid> <Artifactid> Spring-kontex <ArTifactId> ehcache </artifactid> <version> 2.8.3 </version> </dependency> </dependencies> <dependencyManagement> <dependencies> </dependencies> </Dependencies> </Dependencies> </Dependencies> </Dependencies> </Dependencies> </Dependencies> Building> </Dependencies> </Dependencies> </Dependencies> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-maven-plugin</artifactId> </plugin> </plugins> </build> <repositories> <repository> <id>spring-snapshots</id> <url>http://repo.spring.io/snapshot</url> <snapshots> <enabled>true</enabled> </snapshots> </repository> <repository> <id>spring-milestones</id> <url>http://repo.spring.io/milestone</url> </repository> </repository> </repository> <pluginRepository> <pluginRepository> <d> spring-snapshots </d> <rurl> http://repo.spring.io/snapshot </rrepo </PluginRepositories> </jadi Project>
2. Menggunakan Ehcache, kita membutuhkan ehcache.xml untuk menentukan beberapa atribut cache.
<? Xml Version = "1.0" encoding = "UTF-8"?> <Ehcache xmlns: xsi = "http://www.w3.org/2001/xmlschema-instance" xsi: nonamespaceschalocation = "http:/eHcache.org =" nonamespaceschalocation = "http:/ehcache.org.org =" http:/ehcache.org.org = "http:/ehcache.org <diskStore path="java.io.tmpdir/Tmp_EhCache" /> <defaultCache eternal="false" maxElementsInMemory="1000" overflowToDisk="false" diskPersistent="false" timeToIdleSeconds="0" timeToLiveSeconds="600" memoryStoreEvictionPolicy="LRU" /> <cache name = "demo" abadi = "false" maxeLementsInmemory = "100" overflowTodisk = "false" diskpersistent = "false" timetoidleseconds = "0" timetoliveseconds = "300" memoreseevictionPolicy = "lru" /> < /eHcache> MemoryeevictionPolicy = "lru" /> < /eHcAche> memoryeevictionpolicy = "lru" /> < /eHcAche>> 300 "300" 300 "300" 300 "300" 300 "300" 300 "
Jelaskan tag dalam file XML ini.
(1). Diskstore: adalah jalur cache, ehcache dibagi menjadi dua tingkat: memori dan disk. Properti ini mendefinisikan lokasi cache disk. Parameter dijelaskan sebagai berikut:
User.Home User Home Directory User.dir Pengguna saat ini Direktori kerja java.io.tmpdir jalur file sementara default
(2) .DefaultCache: Kebijakan cache default. Ketika Ehcache tidak dapat menemukan cache yang ditentukan, kebijakan cache ini akan digunakan. Hanya satu yang bisa didefinisikan.
(3) .cache: Kebijakan cache khusus, kebijakan cache khusus. Parameter dijelaskan sebagai berikut:
Properti elemen cache:
Nama: Nama cache
MaxElementsInmemory: Jumlah maksimum objek yang di -cache dalam memori
MaxElementsondisk: Jumlah maksimum objek yang di -cache di hard disk. Jika 0, itu berarti Infinity
Eternal: Benar berarti bahwa objek tidak pernah kedaluwarsa. Pada saat ini, properti TimeToidleseconds dan TimetOliveseconds akan diabaikan, dan standarnya salah
OverflowTodisk: Benar berarti bahwa ketika jumlah objek yang di -cache dalam memori mencapai batas MaxElementsInmemory, objek yang meluap akan ditulis ke cache hard disk. Catatan: Jika objek yang di -cache harus ditulis ke hard disk, objek harus mengimplementasikan antarmuka serializable.
DISKSPOOLBUFFERSIZEM: Ukuran cache disk, default adalah 30MB. Setiap cache harus memiliki area cache sendiri.
Diskpersistent: apakah akan cache mesin virtual restart data selama data
DISKEXPIRYTHREADIVALCONDS: Interval Waktu Kegagalan Kegagalan Disk, default adalah 120 detik
TimeToidleseconds: Mengatur waktu maksimum untuk memungkinkan objek menganggur, dalam hitungan detik. Ketika objek telah diakses untuk yang terakhir kalinya, jika nilai properti TimeToidlesConds melebihi nilai properti TimeToidlesConds, objek akan kedaluwarsa dan Ehcache akan menghapus dari cache. Properti ini hanya berlaku jika properti abadi salah. Jika nilai properti adalah 0, itu berarti bahwa objek dapat menganggur tanpa batas waktu
TimeToliveseconds: Mengatur waktu maksimum objek yang diizinkan untuk ada di cache, dalam hitungan detik. Ketika objek telah disimpan dalam cache, jika waktu dalam cache melebihi nilai properti TimetOliveseconds, objek akan kedaluwarsa dan Ehcache akan menghapus dari cache. Properti ini hanya berlaku jika properti abadi salah. Jika nilai properti adalah 0, itu berarti bahwa objek dapat ada di cache tanpa batas waktu. Timetoliveseconds harus lebih besar dari properti TimeToidleseconds agar masuk akal
MemoryStoreEvictionPolicy: Ketika batas MaxElementsInmemory tercapai, Ehcache akan membersihkan memori sesuai dengan kebijakan yang ditentukan. Kebijakan opsional adalah: LRU (terbaru yang baru -baru ini digunakan, kebijakan default), FIFO (pertama, pertama keluar), dan LFU (jumlah minimum kunjungan).
3. Ekspos Ehcache Manager ke wadah konteks musim semi.
@Konfigurasi // Anotasi memulai cache @enablecachingpublic kelas Cacheconfiguration {/** Ehcache Main Manager*/ @bean (name = "appehcachecachemanager") public ehcacheManager EhcacheManager (Ehcachemanagerfactorybean beane) {eHcacheCheManager (EhcachemanagereFactoryBean bean) {eHcacheCheManer (EHCACHEMANGERAGORYBEAGEDE) {eHCACHECHECE. } / * * Menurut pengaturan yang dibagikan atau tidak, Spring menciptakan basis EHCACHE melalui cachemanager.create () atau baru cachemanager (). */ @Bean ehcachemanagerfactorybean ehcachemanagerfactorybean () {ehcachemanagerfactorybean cachemanagerfactorybean = ehcachemanagerfactorybean baru (); cachemanagerfactorybean.setConfiglocation (classpathResource baru ("conf/ehcache-app.xml")); cachemanagerfactorybean.setshared (true); Return CacheManagerFactoryBean; }}@Configuration: Dianotasi untuk boot-spring, terutama dijelaskan sebagai kelas konfigurasi, dan prioritas diberikan untuk pemindaian.
@Bean: Tambahkan kacang ke wadah musim semi.
Semua konfigurasi dilakukan sejauh ini, dan mengintegrasikan kerangka kerja melalui Spring-Boot sederhana.
4. Gunakan ehcache
Menggunakan Ehcache terutama melalui mekanisme cache pegas. Kami telah menerapkan mekanisme cache pegas menggunakan EHCACHE, sehingga kami dapat menggunakan mekanisme cache pegas sepenuhnya dalam hal penggunaan.
Beberapa catatan terlibat:
@Cacheable: Bertanggung jawab untuk menambahkan nilai pengembalian metode ke cache, parameter 3
@Cacheevict: bertanggung jawab untuk membersihkan cache, parameter 4
Penjelasan Parameter:
Nilai: Nama lokasi cache tidak bisa kosong. Jika ehcache digunakan, itu adalah nama cache yang dinyatakan dalam ehcache.xml
Kunci: Kunci yang di -cache, default kosong, yang berarti jenis parameter dan nilai parameter dari metode yang digunakan sebagai kunci, dan mendukung spel
Kondisi: Kondisi pemicu, hanya jika kondisi yang dipenuhi akan ditambahkan ke cache. Standarnya kosong, yang berarti bahwa semuanya ditambahkan ke cache dan mendukung spel
Allentries: Parameter Cacheevict, benar berarti membersihkan semua cache dalam nilai, default adalah false
Tanpa basa -basi lagi, cukup unggah kode:
@Servicepublic CacheDeMoServiceImpl mengimplementasikan CachedeMoService {/** * Kunci cache */string akhir statis public thing_all_key = "/" thing_all/""; /*** Atribut nilai menunjukkan kebijakan cache mana yang akan digunakan. Kebijakan cache ada di 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, benda); } @Cacheable (value = demo_cache_name, key = "#thing.getId () + 'thing'") @Override Public Things FindById (Long ID) {System.err.println ("No Cache!" + ID); return data.get (id); } @Cacheable (value = demo_cache_name, key = thing_all_key) @Override Daftar publik <e 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) publik apa pembaruan (benda) {System.println (thing); data.put (thing.getId (), thing); hal kembali; } @Cacheevict (value = demo_cache_name) @Override public void delete (ID panjang) {data.remove (id); }}5. Anda hanya perlu memberi anotasi pada metode layer layanan melalui anotasi dan Anda dapat menggunakan cache, menyimpan cache di Find **, dan hapus cache di Delete ** dan perbarui **.
Meringkaskan
Di atas adalah metode mengintegrasikan EHCACHE Spring-boot untuk mengimplementasikan mekanisme caching yang diperkenalkan oleh editor. Saya harap ini akan membantu semua orang. Jika Anda memiliki pertanyaan, silakan tinggalkan saya pesan dan editor akan membalas semua orang tepat waktu. Terima kasih banyak atas dukungan Anda ke situs web Wulin.com!