最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

使用@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)文章

  • 淺談JVM系列之JIT中的Virtual Call

    淺談JVM系列之JIT中的Virtual Call

    什么是Virtual Call?Virtual Call在java中的實(shí)現(xiàn)是怎么樣的?Virtual Call在JIT中有沒有優(yōu)化?所有的答案看完這篇文章就明白了。
    2021-06-06
  • IDEA打開java項(xiàng)目后里面的java文件不能運(yùn)行解決辦法

    IDEA打開java項(xiàng)目后里面的java文件不能運(yùn)行解決辦法

    這篇文章主要給大家介紹了關(guān)于IDEA打開java項(xiàng)目后里面的java文件不能運(yùn)行的解決辦法,有時(shí)候想運(yùn)行別人的項(xiàng)目,但是別人的項(xiàng)目并非IDEA項(xiàng)目(甚至只有源碼),當(dāng)我們打開項(xiàng)目時(shí)候,并不能運(yùn)行,需要的朋友可以參考下
    2023-10-10
  • Mybatis 中 Oracle 的拼接模糊查詢及用法詳解

    Mybatis 中 Oracle 的拼接模糊查詢及用法詳解

    這篇文章主要介紹了Mybatis 中 Oracle 的拼接模糊查詢及用法,非常不錯(cuò),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2018-08-08
  • JavaGUI實(shí)現(xiàn)隨機(jī)單詞答題游戲

    JavaGUI實(shí)現(xiàn)隨機(jī)單詞答題游戲

    這篇文章主要為大家詳細(xì)介紹了JavaGUI實(shí)現(xiàn)隨機(jī)單詞答題游戲,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2020-12-12
  • kafka監(jiān)聽問題的解決和剖析

    kafka監(jiān)聽問題的解決和剖析

    這篇文章主要給大家介紹了關(guān)于kafka監(jiān)聽問題的解決和剖析的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-12-12
  • MyBatisCodeHelperPro插件下載及使用教程詳解

    MyBatisCodeHelperPro插件下載及使用教程詳解

    這篇文章主要介紹了MyBatis CodeHelperPro插件使用教程,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友參考下吧
    2020-09-09
  • Java 使用線程池執(zhí)行多個(gè)任務(wù)的示例

    Java 使用線程池執(zhí)行多個(gè)任務(wù)的示例

    這篇文章主要介紹了Java 使用線程池執(zhí)行多個(gè)任務(wù)的示例,幫助大家更好的理解和學(xué)習(xí)使用Java,感興趣的朋友可以了解下
    2021-03-03
  • SpringBoot整合Web開發(fā)之Json數(shù)據(jù)返回的實(shí)現(xiàn)

    SpringBoot整合Web開發(fā)之Json數(shù)據(jù)返回的實(shí)現(xiàn)

    這篇文章主要介紹了SpringBoot整合Web開發(fā)其中Json數(shù)據(jù)返回的實(shí)現(xiàn),文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2022-08-08
  • 使用jaxp進(jìn)行dom解析_動(dòng)力節(jié)點(diǎn)Java學(xué)院整理

    使用jaxp進(jìn)行dom解析_動(dòng)力節(jié)點(diǎn)Java學(xué)院整理

    這篇文章主要介紹了使用jaxp進(jìn)行dom解析的相關(guān)資料,需要的朋友可以參考下
    2017-08-08
  • Java關(guān)鍵字詳解之final static this super的用法

    Java關(guān)鍵字詳解之final static this super的用法

    this用來調(diào)用目前類自身的成員變量,super多用來調(diào)用父類的成員,final多用來定義常量用的,static定義靜態(tài)變量方法用的,靜態(tài)變量方法只能被類本身調(diào)用,下文將詳細(xì)介紹,需要的朋友可以參考下
    2021-10-10

最新評(píng)論

浙江省| 驻马店市| 定边县| 九江市| 仙桃市| 吉林省| 古浪县| 瓦房店市| 尚志市| 安远县| 太白县| 宜黄县| 婺源县| 佛冈县| 鄢陵县| 郓城县| 涪陵区| 惠水县| 六枝特区| 蒙山县| 德保县| 大竹县| 彭阳县| 孝感市| 辽阳市| 多伦县| 团风县| 石泉县| 遂昌县| 灵石县| 师宗县| 原平市| 资中县| 林西县| 定安县| 长岭县| 南雄市| 集贤县| 方城县| 玉溪市| 东方市|