SpringBoot學(xué)習(xí)之基于注解的緩存
主要使用到的注解:
- @Cacheable(放入緩存) 能夠根據(jù)方法的請(qǐng)求參數(shù)對(duì)其結(jié)果進(jìn)行緩存
- @CachePut(修改緩存中的值) 能夠根據(jù)方法的請(qǐng)求參數(shù)對(duì)其結(jié)果進(jìn)行緩存,和 @Cacheable 不同的是,它每次都會(huì)觸發(fā)真實(shí)方法的調(diào)用
- @CachEvict(清除緩存) 能夠根據(jù)一定的條件對(duì)緩存進(jìn)行清空
使用步驟
1、@EnableCaching 這個(gè)注解,標(biāo)注在 springboot 主啟動(dòng)類上,表示系統(tǒng)開(kāi)啟緩存。
@EnableCaching @SpringBootApplication(scanBasePackages = CommonConstant.DEFAULT_PACKAGE_NAME) public class PortalApp { public static void main(String[] args) { SpringApplication.run(PortalApp.class, args); } }
2、在對(duì)應(yīng)需要進(jìn)行緩存的方法上加入對(duì)應(yīng)的注解即可;
注解屬性介紹
@Cacheable() 的屬性值及釋義:
value/cacheNames = "demoCommon";//redis的第一層文件夾為demoCommon key="#id"; //系統(tǒng)自定義key值格式,相當(dāng)于value下邊一層 unless = "#result==null";//方法返回值結(jié)果為空時(shí),不存入緩存;
代碼示例如下:
//-- 根據(jù)id查詢demo @Cacheable(cacheNames = "demoCommon", unless = "#result==null", key="#id") public Demo queryById(String id) { return demoMapper.queryById(id); }
調(diào)用上述接口,會(huì)將接口返回的數(shù)據(jù)以下圖格式存入redis,接口再使用此id作為參數(shù)查詢時(shí),會(huì)直接去緩存里拿:
@CachPut屬性值及釋義:
value/cacheNames = "demoCommon";//redis的第一層文件夾為demoCommon keyGenerator="myKeyGenerator"; //系統(tǒng)自定義key值格式,相當(dāng)于value下邊一層
調(diào)用示例如下:
@CachePut(value = "demoCommon", key=#"#demo.id") public Demo updateById(Demo demo) { demoMapper.updateById(demo); return demo; }
調(diào)用上圖接口,會(huì)根據(jù)傳入的id找到對(duì)應(yīng)的key緩存的值,并修改緩存中的value;
@CachEvict屬性值及釋義:
value/cacheNames = "demoCommon";//redis的第一層文件夾為demoCommon key=#"#demo.id"; //系統(tǒng)自定義key值格式,相當(dāng)于value下邊一層 allEntries="true";// 是否清空所有緩存內(nèi)容,缺省為 false,如果指定為 true,則方法調(diào)用后將立即清空value/cachaeNames下邊的所有緩存
@CacheEvict(value = "demoCommon",allEntries="true",key = "#demo.id") public Demo deleteById(Demo demo) { demoMapper.deleteById(demo); return demo; }
調(diào)用接口后,redis為:
@Caching
接口需要使用多個(gè)注解標(biāo)簽,則可使用此注解;示例如下:
@Caching(put = { @CachePut(value = "demoCommon1", key = "#demo.id") @CachePut(value = "demoCommon2", key = "#demo.id") @CachePut(value = "demoCommon3", key = "#demo.id") }) public Demo updateByIdC(Demo demo) { demoMapper.updateById(demo); return demo; }
總結(jié)
到此這篇關(guān)于SpringBoot基于注解的緩存的文章就介紹到這了,更多相關(guān)SpringBoot注解的緩存內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
IDEA創(chuàng)建Java項(xiàng)目保姆級(jí)教程(超詳細(xì)!)
這篇文章主要給大家介紹了關(guān)于IDEA創(chuàng)建Java項(xiàng)目保姆級(jí)教程的相關(guān)資料,Java是一種廣泛使用的編程語(yǔ)言,廣泛用于Web應(yīng)用程序和客戶端應(yīng)用程序的開(kāi)發(fā),文中通過(guò)圖文介紹的非常詳細(xì),需要的朋友可以參考下2023-09-09Mockito mock Kotlin Object類方法報(bào)錯(cuò)解決方法
這篇文章主要介紹了Mockito mock Kotlin Object類方法報(bào)錯(cuò)解決方法,本篇文章通過(guò)簡(jiǎn)要的案例,講解了該項(xiàng)技術(shù)的了解與使用,以下就是詳細(xì)內(nèi)容,需要的朋友可以參考下2021-09-09使用SpringBoot和JPA實(shí)現(xiàn)批量處理新增、修改
最近項(xiàng)目需要在JPA中使用ID進(jìn)行批量更新,所以下面這篇文章主要給大家介紹了關(guān)于使用SpringBoot和JPA實(shí)現(xiàn)批量處理新增、修改的相關(guān)資料,文中通過(guò)實(shí)例代碼介紹的非常詳細(xì),需要的朋友可以參考下2023-06-06解決idea爆紅 cant resolve symbol String的問(wèn)題解析
連著出差幾個(gè)禮拜沒(méi)有使用idea開(kāi)發(fā)工具,突然一天打開(kāi)電腦發(fā)現(xiàn)idea里的代碼全部爆紅,懵逼不如所措,很多朋友建議我按住Alt+回車(chē)設(shè)置jdk就能解決,但是仍然報(bào)錯(cuò),經(jīng)過(guò)幾個(gè)小時(shí)的倒騰最終解決,遇到此問(wèn)題的朋友參考下本文吧2021-06-06JDBC獲取數(shù)據(jù)庫(kù)連接的5種方式實(shí)例
JDBC是一種用于執(zhí)行SQL語(yǔ)句的JavaAPI,為多種關(guān)系數(shù)據(jù)庫(kù)提供統(tǒng)一訪問(wèn),它由一組用Java語(yǔ)言編寫(xiě)的類和接口組成,提供了諸如查詢和更新數(shù)據(jù)庫(kù)中數(shù)據(jù)的方法,這篇文章主要給大家介紹了關(guān)于JDBC獲取數(shù)據(jù)庫(kù)連接的5種方式,需要的朋友可以參考下2022-06-06SpringCloud Feign服務(wù)調(diào)用請(qǐng)求方式總結(jié)
這篇文章主要介紹了SpringCloud Feign服務(wù)調(diào)用方式總結(jié),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2020-04-04