springboot整合單機緩存ehcache的實現(xiàn)
區(qū)別于redis的分布式緩存,ehcache是純java進程內(nèi)的單機緩存,根據(jù)不同的場景可選擇使用,以下內(nèi)容主要為springboot整合ehcache以及注意事項
添加pom引用
<dependency> <groupId>net.sf.ehcache</groupId> <artifactId>ehcache</artifactId> <version>2.10.9.2</version> </dependency>
啟動類添加開啟緩存注解:@EnableCaching
添加xml配置,注意,ehcache需要單獨的配置文件
<?xml version="1.0" encoding="UTF-8"?> <ehcache xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="http://ehcache.org/ehcache.xsd" updateCheck="false"> <!--默認(rèn)緩存策略 --> <!-- external:是否永久存在,設(shè)置為true則不會被清除,此時與timeout沖突,通常設(shè)置為false--> <!-- diskPersistent:是否啟用磁盤持久化--> <!-- maxElementsInMemory:最大緩存數(shù)量--> <!-- overflowToDisk:超過最大緩存數(shù)量是否持久化到磁盤--> <!-- timeToIdleSeconds:最大不活動間隔,設(shè)置過長緩存容易溢出,設(shè)置過短無效果,可用于記錄時效性數(shù)據(jù),例如驗證碼--> <!-- timeToLiveSeconds:最大存活時間--> <!-- memoryStoreEvictionPolicy:緩存清除策略--> <defaultCache eternal="false" diskPersistent="false" maxElementsInMemory="1000" overflowToDisk="false" timeToIdleSeconds="60" timeToLiveSeconds="60" memoryStoreEvictionPolicy="LRU" /> <cache name="cache1" eternal="false" diskPersistent="false" maxElementsInMemory="1000" overflowToDisk="false" timeToIdleSeconds="2" timeToLiveSeconds="2" memoryStoreEvictionPolicy="LRU" /> </ehcache>
這里我定義了一個緩存名字為cache1
修改項目的配置文件application.properties,添加spring緩存類型以及緩存配置文件路徑
spring.cache.ehcache.config=classpath:ehcache.xml spring.cache.type=ehcache
上面的步驟做好之后,就可以使用了
給你需要加緩存的方法添加注解
@Configuration public class TestConfig { @Cacheable(value = "cache1",key = "#id") public TestController.Person create(String id) { return new TestController.Person(); } }
這里的value跟xml配置文件里的一致即可
我們調(diào)用一下測試看看
@GetMapping("/testCache1") public void testCache1(@Param("id") String id) throws InterruptedException { Person obj1 = testConfig.create(id); Person obj2 = testConfig.create(id); Thread.sleep(3000); Person obj3 = testConfig.create(id); Person obj4 = testConfig.create(id); log.info("test1:"+obj1.toString()); log.info("test2:"+obj2.toString()); log.info("test3:"+obj3.toString()); log.info("test4:"+obj4.toString()); System.out.println(obj1.equals(obj2)); }
執(zhí)行一下結(jié)果看
可以看到,obj1跟obj2是同一個對象,當(dāng)程序睡眠了三秒之后,再次調(diào)用方法,就會重新創(chuàng)建對象,緩存生效
注意事項:
@Cacheable修飾的方法必須是public并且不能是static,原理是因為使用了動態(tài)代理,需要重寫方法
xml里面的配置要寫全,要不然項目啟動報錯,就是下圖這些
xml里面配置的defaultCache沒看出有啥用,我也沒刪了試試
使用緩存的方法不能在@RestController修飾的類中,即不能在controller層,要不然緩存失效,可以在@Service、@Configuratin、@Component等類下面
到此這篇關(guān)于springboot整合單機緩存ehcache的實現(xiàn)的文章就介紹到這了,更多相關(guān)springboot單機緩存ehcache內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
- SpringBoot中整合Ehcache實現(xiàn)熱點數(shù)據(jù)緩存的詳細過程
- Spring中的@Cacheable緩存注解詳解
- SpringBoot?Cache?二級緩存的使用
- 詳解如何使用SpringBoot的緩存@Cacheable
- Spring中緩存注解@Cache的使用詳解
- SpringCache緩存處理詳解
- 詳解Springboot @Cacheable 注解(指定緩存位置)
- Spring Cache @Cacheable 緩存在部分Service中不生效的解決辦法
- Springboot使用@Cacheable注解實現(xiàn)數(shù)據(jù)緩存
- SpringBoot使用Spring?Cache高效處理緩存數(shù)據(jù)
相關(guān)文章
python 尋找優(yōu)化使成本函數(shù)最小的最優(yōu)解的方法
這篇文章主要介紹了python 尋找優(yōu)化使成本函數(shù)最小的最優(yōu)解的方法,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧2017-12-12Python3調(diào)用百度AI識別圖片中的文字功能示例【測試可用】
這篇文章主要介紹了Python3調(diào)用百度AI識別圖片中的文字功能,結(jié)合實例形式分析了Python3安裝及使用百度AI接口的相關(guān)操作技巧,并附帶說明了百度官方AI平臺的注冊及接口調(diào)用操作方法,需要的朋友可以參考下2019-03-03python利用hook技術(shù)破解https的實例代碼
python利用hook技術(shù)破解https的實例代碼,需要的朋友可以參考一下2013-03-03對Python3中dict.keys()轉(zhuǎn)換成list類型的方法詳解
今天小編就為大家分享一篇對Python3中dict.keys()轉(zhuǎn)換成list類型的方法詳解,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2019-02-02Python使用ConfigParser模塊操作配置文件的方法
這篇文章主要介紹了Python使用ConfigParser模塊操作配置文件的方法,結(jié)合實例形式分析了Python基于ConfigParser模塊針對配置文件的創(chuàng)建、讀取、寫入、判斷等相關(guān)操作技巧,需要的朋友可以參考下2018-06-06Python虛擬環(huán)境virtualenv創(chuàng)建及使用過程圖解
這篇文章主要介紹了Python虛擬環(huán)境virtualenv創(chuàng)建及使用過程圖解,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下2020-12-12