91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

@CacheEvict中的allEntries與beforeInvocation的區別是什么

發布時間:2021-12-24 21:03:16 來源:億速云 閱讀:156 作者:柒染 欄目:開發技術

這篇文章將為大家詳細講解有關@CacheEvict中的allEntries與beforeInvocation的區別是什么,文章內容質量較高,因此小編分享給大家做個參考,希望大家閱讀完這篇文章后對相關知識有一定的了解。

@CacheEvict allEntries與beforeInvocation區別

在spring cache中,@CacheEvict是清除緩存的注解。

其中注解參數可以只有value,key意思是清除在value值空間中的key值數據,此時默認在當前注解方法成功執行之后再清除。

這時候就會存在一個問題,也許你的注解方法成功執行了刪除操作,但是后續代碼拋出異常導致未能清除緩存,下次查詢時依舊從緩存中去讀取,這時查詢到的結果值是刪除操作之前的值。

有一個簡單的解決辦法,在注解參數里面加上beforeInvocation為true,意思是說當執行這個方法之前執行清除緩存的操作,這樣不管這個方法執行成功與否,該緩存都將不存在。

當注解參數加上allEntries為true時,意思是說這個清除緩存是清除當前value值空間下的所有緩存數據。

@CacheEvict注解參數詳解

最近在項目中一直用到@Cacheable和@CacheEvict這兩個注解來加緩存和清除緩存,但有時候會出現在同一個事務中先是清楚了緩存,但是有不在這個事務中的方法調用了查詢,又把更新前的數據重新放到緩存里面了,所以就想好好的去研究一下@CacheEvict這個緩存刪除的注解

1.value

必須屬性,用于指定該方法清除哪個緩存區的數據,默認是一個空的數組

2. allEntries

這個屬性是指是否清楚整個緩存區

3.beforeInvocation

這個屬性比較關鍵,他的意思是是否在執行對應方法之前刪除緩存,默認 false(即執行方法之后再刪除緩存),當我們遇到需要在執行方法前刪除緩存,也就是不管方法執行是否成功都需要清除緩存,那我們就可以把beforeInvocation的值改為true

4.condition

這個屬性是指定一個SpEL表達式,只有當該表達式為true時才會清除緩存

5.key

通過SpEL表達式顯示指定緩存的key

eg: key = "#warehousePo.guid + ‘all'"

6.cacheNames

cache名稱集合,數據結構為數組類型

我用到的比較多的就是beforeInvocation的使用,因為根據不同的業務邏輯,會出現緩存刪除的場景不同,需要慎重考慮設置為true還是false,文章比較淺,可以大致理解一下各個參數的含義。

關于@CacheEvict中的allEntries與beforeInvocation的區別是什么就分享到這里了,希望以上內容可以對大家有一定的幫助,可以學到更多知識。如果覺得文章不錯,可以把它分享出去讓更多的人看到。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

新邵县| 柘城县| 霍林郭勒市| 闻喜县| 黄冈市| 南投县| 视频| 鸡泽县| 行唐县| 湾仔区| 甘孜| 新邵县| 长沙县| 抚州市| 洞头县| 内丘县| 珠海市| 明溪县| 阿瓦提县| 开远市| 西平县| 航空| 兴仁县| 连州市| 兰州市| 曲沃县| 开远市| 大宁县| 鲜城| 七台河市| 屏山县| 赣州市| 阜阳市| 龙山县| 乐都县| 福贡县| 禹州市| 犍为县| 哈密市| 开远市| 边坝县|