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

溫馨提示×

溫馨提示×

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

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

使用@CacheEvict?多參數怎么匹配刪除

發布時間:2021-12-31 11:27:01 來源:億速云 閱讀:149 作者:小新 欄目:開發技術

這篇文章主要為大家展示了“使用@CacheEvict 多參數怎么匹配刪除”,內容簡而易懂,條理清晰,希望能夠幫助大家解決疑惑,下面讓小編帶領大家一起研究并學習一下“使用@CacheEvict 多參數怎么匹配刪除”這篇文章吧。

@CacheEvict 多參數匹配刪除

如果@Cacheable(“XXX”)

Object getXXX(String a, String b, String c);

spring的緩存使用的key是ESPL表達式,然后翻看源碼key默認用的生成方式是org.springframework.cache.interceptor.SimpleKeyGenerator

大于1個參數走的是最后一個方法

 /**
  * Generate a key based on the specified parameters.
  */
 public static Object generateKey(Object... params) {
  if (params.length == 0) {
   return SimpleKey.EMPTY;
  }
  if (params.length == 1) {
   Object param = params[0];
   if (param != null && !param.getClass().isArray()) {
    return param;
   }
  }
  return new SimpleKey(params);
 }

然后查看org.springframework.cache.interceptor.SimpleKey對應代碼,發現返回的其實是SimpleKey

 /**
  * Create a new {@link SimpleKey} instance.
  * @param elements the elements of the key
  */
 public SimpleKey(Object... elements) {
  Assert.notNull(elements, "Elements must not be null");
  this.params = new Object[elements.length];
  System.arraycopy(elements, 0, this.params, 0, elements.length);
  this.hashCode = Arrays.deepHashCode(this.params);
 }

解決思路

方案一

單獨寫一個自定義的KeyGenerator,處理對應的key。(之前的redis的文章已寫過,所以不重復寫了)

下面博文的 MyKeyGenerator 這個類

sprintboot使用spring-security包,緩存內存與redis共存

方案二

@Cacheable(value=“XXX”, key=“xxxx”)
@CacheEvict(value=“XXX”, key=“xxxx”)

做相應的key配置

數組的話可以使用 key = “#root.args[0]”

參數參考如下:

名字位置描述示例
methodNameroot object當前被調用的方法名#root.methodName
methodroot object當前被調用的方法#root.method .name
targetroot object當前被調用的目標對象#root.target
targetClassroot object當前被調用的目標對象類#root.targetClass
argsroot object當前被調用的方法的參數列表#root.args[0]
cachesroot object當前方法調用使用的緩存列表#root.caches[0].name
argument nameevaluation context方法參數的名字,可以直接#參數名,也可以使用#p0或#a0的形式,0代表參數的索引#iban、#a0、#p0
resultevaluation context方法執行后的返回值#result

以上是“使用@CacheEvict 多參數怎么匹配刪除”這篇文章的所有內容,感謝各位的閱讀!相信大家都有了一定的了解,希望分享的內容對大家有所幫助,如果還想學習更多知識,歡迎關注億速云行業資訊頻道!

向AI問一下細節

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

AI

喀喇沁旗| 汉沽区| 福建省| 扶绥县| 平果县| 保靖县| 文成县| 日喀则市| 上饶县| 三台县| 舟山市| 沙坪坝区| 卢氏县| 大理市| 杭锦后旗| 丰城市| 会东县| 云南省| 神木县| 黔江区| 渝北区| 莱西市| 武川县| 股票| 巴青县| 资中县| 罗源县| 新河县| 萨迦县| 辽宁省| 平罗县| 峡江县| 仁布县| 漠河县| 镇雄县| 焉耆| 越西县| 扎鲁特旗| 金乡县| 西藏| 连云港市|