欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

使用@CacheEvict?多參數(shù)如何匹配刪除

 更新時(shí)間:2021年12月31日 09:35:42   作者:miheal_near  
這篇文章主要介紹了使用@CacheEvict?多參數(shù)如何匹配刪除,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教

@CacheEvict 多參數(shù)匹配刪除

如果@Cacheable(“XXX”)

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

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

大于1個(gè)參數(shù)走的是最后一個(gè)方法

 /**
  * 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對(duì)應(yīng)代碼,發(fā)現(xiàn)返回的其實(shí)是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);
 }

解決思路

方案一:?jiǎn)为?dú)寫一個(gè)自定義的KeyGenerator

處理對(duì)應(yīng)的key。(之前的redis的文章已寫過,所以不重復(fù)寫了)

下面博文的 MyKeyGenerator 這個(gè)類

sprintboot使用spring-security包,緩存內(nèi)存與redis共存

方案二:@Cacheable(value=“XXX”, key=“xxxx”)

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

做相應(yīng)的key配置

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

參數(shù)參考如下:

名字 位置 描述 示例
methodName root object 當(dāng)前被調(diào)用的方法名 #root.methodName
method root object 當(dāng)前被調(diào)用的方法 #root.method .name
target root object 當(dāng)前被調(diào)用的目標(biāo)對(duì)象 #root.target
targetClass root object 當(dāng)前被調(diào)用的目標(biāo)對(duì)象類 #root.targetClass
args root object 當(dāng)前被調(diào)用的方法的參數(shù)列表 #root.args[0]
caches root object 當(dāng)前方法調(diào)用使用的緩存列表 #root.caches[0].name
argument name evaluation context 方法參數(shù)的名字,可以直接#參數(shù)名,也可以使用#p0或#a0的形式,0代表參數(shù)的索引 #iban、#a0、#p0
result evaluation context 方法執(zhí)行后的返回值 #result

以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。

相關(guān)文章

最新評(píng)論