CacheEvict 多引數如何匹配刪除

2021-10-21 02:11:13 字數 1634 閱讀 5274

如果@cacheable(「***」)

object get***(string a, string b, string c);

spring的快取使用的key是espl表示式,然後翻看原始碼key預設用的生成方式是org.springframework.cache.interceptor.******keygenerator

大於1個引數走的是最後乙個方法

/**

* generate a key based on the specified parameters.

*/public

static object generatekey

(object.

.. params)

if(params.length ==1)

}return

new******key

(params)

;}

然後檢視org.springframework.cache.interceptor.******key對應**,發現返回的其實是******key

/**

* create a new instance.

* @param elements the elements of the key

*/public

******key

(object.

.. elements)

下面博文的 mykeygenerator 這個類

sprintboot使用spring-security包,快取記憶體與redis共存

方案二:@cacheable(value=「***」, key=「***x」)

@cacheevict(value=「***」, key=「***x」)

做相應的key配置

陣列的話可以使用 key = 「#root.args[0]」

名字位置

描述示例

methodname

root object

當前被呼叫的方法名

#root.methodname

method

root object

當前被呼叫的方法

#root.method .name

target

root object

當前被呼叫的目標物件

#root.target

targetclass

root object

當前被呼叫的目標物件類

#root.targetclass

args

root object

當前被呼叫的方法的引數列表

#root.args[0]

caches

root object

當前方法呼叫使用的快取列表

#root.caches[0].name

argument name

evaluation context

方法引數的名字,可以直接#引數名,也可以使用#p0或#a0的形式,0代表引數的索引

#iban、#a0、#p0

result

evaluation context

方法執行後的返回值

#result

如何使用Feign構造多引數的請求

tips 本文基於spring cloud greenwich sr1,理論上支援finchley及更高版本。本節來 如何使用feign構造多引數的請求。筆者以get及post請求為例講解,其他方式 例如delete put等 的請求原理相通,讀者可自行研究。假設需請求的url包含多個引數,例如ht...

GoLang中如何使用多引數屬性傳參

我們常常因為傳入的引數不確定而頭疼不已,golang 為我們提供了接入多值引數用於解決這個問題。但是一般我們直接寫已知 即所有的值都知道乙個乙個塞進去就好了,但是絕大部分我們是得到使用者的大量輸入想通過迴圈傳入,但是這樣發現無法使用這個多值引數的功能。其實底層實現將多個引數視為傳入的乙個不定長陣列。...

GoLang中如何使用多引數屬性傳參

我們常常因為傳入的引數不確定而頭疼不已,golang 為我們提供了接入多值引數用於解決這個問題。但是一般我們直接寫已知 即所有的值都知道乙個乙個塞進去就好了,但是絕大部分我們是得到使用者的大量輸入想通過迴圈傳入,但是這樣發現無法使用這個多值引數的功能。其實底層實現將多個引數視為傳入的乙個不定長陣列。...