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:
(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:
Springboot mendukung banyak metode caching: redis, jambu jala, ehcahe, jcache, dll.
Jelaskan perbedaan antara Redis dan Ehcache:
Redis: Ini adalah program berjalan independen. Setelah instalasi saja, ia dimanipulasi menggunakan jedis di java. Karena independen, jika Anda menulis program uji unit, menaruh beberapa data di Redis, dan kemudian menulis program lain untuk mendapatkan data, Anda bisa mendapatkan data. ,
EHCACHE: Jelas berbeda dari Redis, terikat pada program Java. Ketika program Java masih hidup, itu hidup. Misalnya, jika Anda menulis program independen untuk menempatkan data, dan kemudian menulis program independen untuk mendapatkan data, Anda tidak akan mendapatkan data. Data hanya dapat diperoleh dalam program independen.
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:
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 **.
Penjelasan terperinci tentang anotasi cache
@Cacheconfig: Ini terutama digunakan untuk mengonfigurasi beberapa konfigurasi cache umum yang akan digunakan di kelas ini. Di sini @Cacheconfig (Cachenames = "Users"): Konten yang dikembalikan pada objek akses data dikonfigurasi untuk disimpan dalam objek cache bernama pengguna. Kami juga dapat mendefinisikannya secara langsung melalui nama @cache yang dapat diatur tanpa menggunakan anotasi ini.
@Cacheable: Nilai pengembalian fungsi findByname yang dikonfigurasi akan ditambahkan ke cache. Pada saat yang sama, ketika bertanya, pertama -tama akan mendapatkan dari cache, dan jika tidak ada, akses ke database akan dimulai. Anotasi ini terutama memiliki parameter berikut:
Selain dua anotasi yang digunakan di sini, ada juga anotasi inti berikut:
@CachePut: Dikonfigurasi pada suatu fungsi, dapat di -cache sesuai dengan parameter dan menentukan kondisi. Tidak seperti @cacheable, itu benar -benar memanggil fungsi setiap saat, jadi ini terutama digunakan untuk penambahan data dan operasi modifikasi. Parameternya mirip dengan @cacheable. Untuk fungsi tertentu, silakan merujuk ke analisis parameter @cacheable di atas.
@Cacheevict: Dikonfigurasi pada fungsi, biasanya digunakan dalam metode penghapusan, untuk menghapus data yang sesuai dari cache. Selain parameter yang sama dengan @cacheable, ia memiliki dua parameter berikut:
Di atas adalah semua konten artikel ini. Saya berharap ini akan membantu untuk pembelajaran semua orang dan saya harap semua orang akan lebih mendukung wulin.com.