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

使用@CacheEvict清除指定下所有緩存

 更新時間:2021年12月24日 16:18:50   作者:eara's  
這篇文章主要介紹了使用@CacheEvict清除指定下所有緩存,具有很好的參考價(jià)值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教

@CacheEvict清除指定下所有緩存

@CacheEvict(cacheNames = "parts:grid",allEntries = true) 

此注解會清除part:grid下所有緩存

@CacheEvict要求指定一個或多個緩存,使之都受影響。此外,還提供了一個額外的參數(shù)allEntries 。表示是否需要清除緩存中的所有元素。默認(rèn)為false,表示不需要。

當(dāng)指定了allEntries為true時,Spring Cache將忽略指定的key。有的時候我們需要Cache一下清除所有的元素。

@Cacheable 緩存 @CachePut:緩存更新 @CacheEvict:緩存刪除

@Cacheable 緩存

說明:在支持Spring Cache的環(huán)境下,對于使用@Cacheable標(biāo)注的方法,Spring在每次執(zhí)行前都會檢查Cache中是否存在相同key的緩存元素,如果存在就不再執(zhí)行該方法,而是直接從緩存中獲取結(jié)果進(jìn)行返回,否則才會執(zhí)行并將返回結(jié)果存入指定的緩存中。

// @since 3.1  可以標(biāo)注在方法上、類上  下同
@Target({ElementType.METHOD, ElementType.TYPE})
@Retention(RetentionPolicy.RUNTIME)
@Inherited
@Documented
public @interface Cacheable {
    // 緩存名稱  可以寫多個,key的真正組成,以cacheName為前綴,多個就會有多個key產(chǎn)生
    @AliasFor("cacheNames")
    String[] value() default {};
    @AliasFor("value")
    String[] cacheNames() default {};
    // 支持寫SpEL,切可以使用#root,#參數(shù)名”或者“#p參數(shù)index”
    //詳情去 https://blog.csdn.net/dalong_bamboo/article/details/103844076
    String key() default "";
    // Mutually exclusive:它和key屬性互相排斥。請只使用一個,直接寫bean的名字就可以
    String keyGenerator() default "";
   //用于選擇使用哪個cacheManager
    String cacheManager() default "";
    //用戶定義如何處理緩存,實(shí)現(xiàn) org.springframework.cache.interceptor.CacheResolver接口
    String cacheResolver() default "";
    // 表示在哪種情況下才緩存結(jié)果,可使用SpEL,可以使用#root。  只有true時,才會作用在這個方法上
    String condition() default "";
    // 表示在哪種情況下不緩存結(jié)果,可以寫SpEL #root,并且可以使用#result拿到方法返回值    經(jīng)典值#result == null
    String unless() default "";
    
    // true:表示強(qiáng)制同步執(zhí)行。(若多個線程試圖為**同一個鍵**加載值,以同步的方式來進(jìn)行目標(biāo)方法的調(diào)用)
    // 同步的好處是:后一個線程會讀取到前一個緩存的緩存數(shù)據(jù),不用再查庫了~~~ 
    // 默認(rèn)是false,不開啟同步one by one的
    // @since 4.3  注意是sync而不是Async
    // 它的解析依賴于Spring4.3提供的Cache.get(Object key, Callable<T> valueLoader);方法
    boolean sync() default false;
}

@CachePut:緩存更新

說明:@CachePut也可以聲明一個方法支持緩存功能。

與@Cacheable不同的是使用@CachePut標(biāo)注的方法在執(zhí)行前不會去檢查緩存中是否存在之前執(zhí)行過的結(jié)果,而是每次都會執(zhí)行該方法,并將執(zhí)行結(jié)果以鍵值對的形式存入指定的緩存中。

@Target({ElementType.METHOD, ElementType.TYPE})
@Retention(RetentionPolicy.RUNTIME)
@Inherited
@Documented
public @interface Cacheable {
 @AliasFor("cacheNames")
 String[] value() default {};
 @AliasFor("value")
 String[] cacheNames() default {};
 // 注意:它和上面區(qū)別是。此處key它還能使用#result
 String key() default "";
 String keyGenerator() default "";
 String cacheManager() default "";
 String cacheResolver() default "";
 String condition() default "";
 String unless() default "";
}

@CacheEvict:緩存刪除

說明:@CacheEvict是用來標(biāo)注在需要清除緩存元素的方法或類上的。當(dāng)標(biāo)記在一個類上時表示其中所有的方法的執(zhí)行都會觸發(fā)緩存的清除操作。

@CacheEvict可以指定的屬性有value、key、condition、allEntries和beforeInvocation。其中value、key和condition的語義與@Cacheable對應(yīng)的屬性類似。

即value表示清除操作是發(fā)生在哪些Cache上的(對應(yīng)Cache的名稱);key表示需要清除的是哪個key,如未指定則會使用默認(rèn)策略生成的key;condition表示清除操作發(fā)生的條件。

下面我們來介紹一下新出現(xiàn)的兩個屬性allEntries和beforeInvocation。

allEntries屬性,allEntries是boolean類型,表示是否需要清除緩存中的所有元素。

默認(rèn)為false,表示不需要。當(dāng)指定了allEntries為true時,Spring Cache將忽略指定的key。

有的時候我們需要Cache一下清除所有的元素,這比一個一個清除元素更有效率。

@Target({ElementType.METHOD, ElementType.TYPE})
@Retention(RetentionPolicy.RUNTIME)
@Inherited
@Documented
public @interface Cacheable {
 @AliasFor("cacheNames")
 String[] value() default {};
 @AliasFor("value")
 String[] cacheNames() default {};
 // 它也能使用#result
 String key() default "";
 String keyGenerator() default "";
 String cacheManager() default "";
 String cacheResolver() default "";
 String condition() default "";
 // 是否把上面cacheNames指定的所有的緩存都清除掉,默認(rèn)false
 boolean allEntries() default false;
 // 是否讓清理緩存動作在目標(biāo)方法之前執(zhí)行,默認(rèn)是false(在目標(biāo)方法之后執(zhí)行)
 // 注意:若在之后執(zhí)行的話,目標(biāo)方法一旦拋出異常了,那緩存就清理不掉了~~~~
 boolean beforeInvocation() default false;
}

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

相關(guān)文章

  • Springboot集成Kafka實(shí)現(xiàn)producer和consumer的示例代碼

    Springboot集成Kafka實(shí)現(xiàn)producer和consumer的示例代碼

    這篇文章主要介紹了Springboot集成Kafka實(shí)現(xiàn)producer和consumer的示例代碼,詳細(xì)的介紹了什么是Kafka和安裝Kafka以及在springboot項(xiàng)目中集成kafka收發(fā)message,感興趣的小伙伴們可以參考一下
    2018-05-05
  • Spring Data JPA結(jié)合Mybatis進(jìn)行分頁查詢的實(shí)現(xiàn)

    Spring Data JPA結(jié)合Mybatis進(jìn)行分頁查詢的實(shí)現(xiàn)

    本文主要介紹了Spring Data JPA結(jié)合Mybatis進(jìn)行分頁查詢的實(shí)現(xiàn)
    2024-03-03
  • Spring中@RequestMapping、@PostMapping、@GetMapping的實(shí)現(xiàn)

    Spring中@RequestMapping、@PostMapping、@GetMapping的實(shí)現(xiàn)

    RequestMapping、@PostMapping和@GetMapping是三個非常常用的注解,本文就來介紹一下這三種注解的具體使用,具有一定的參考價(jià)值,感興趣的可以了解一下
    2024-07-07
  • Java語言中的自定義類加載器實(shí)例解析

    Java語言中的自定義類加載器實(shí)例解析

    這篇文章主要介紹了Java語言中的自定義類加載器實(shí)例解析,分享了相關(guān)代碼示例,小編覺得還是挺不錯的,具有一定借鑒價(jià)值,需要的朋友可以參考下
    2018-02-02
  • SpringBoot使用RestTemplate發(fā)送http請求的實(shí)操演示

    SpringBoot使用RestTemplate發(fā)送http請求的實(shí)操演示

    RestTemplate是Spring 框架提供的 ,可用于在應(yīng)用中調(diào)用 rest 服務(wù),它簡化了與 http 服務(wù)的通信方式,統(tǒng)一了 RESTful 的標(biāo)準(zhǔn),封裝了 http 鏈接,本文給大家介紹了SpringBoot使用RestTemplate發(fā)送http請求的實(shí)操演示,需要的朋友可以參考下
    2024-11-11
  • Jmeter?BlazeMeter實(shí)現(xiàn)web錄制過程

    Jmeter?BlazeMeter實(shí)現(xiàn)web錄制過程

    BlazeMeter是一款與Apache JMeter兼容的chrome插件,采用BlazeMeter可以方便的進(jìn)行流量錄制和腳本生成,作為接口測試腳本編寫的一個基礎(chǔ),這篇文章主要介紹了Jmeter?BlazeMeter實(shí)現(xiàn)web錄制,需要的朋友可以參考下
    2021-12-12
  • spring boot中controller的使用及url參數(shù)的獲取方法

    spring boot中controller的使用及url參數(shù)的獲取方法

    這篇文章主要介紹了spring boot中controller的使用及url參數(shù)的獲取方法,非常不錯,具有參考借鑒價(jià)值,需要的朋友可以參考下
    2018-01-01
  • Spring Security如何在Servlet中執(zhí)行

    Spring Security如何在Servlet中執(zhí)行

    這篇文章主要介紹了Spring Security如何在Servlet中執(zhí)行,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2020-04-04
  • Java Callable接口實(shí)現(xiàn)細(xì)節(jié)詳解

    Java Callable接口實(shí)現(xiàn)細(xì)節(jié)詳解

    這篇文章主要介紹了Java Callable接口實(shí)現(xiàn)細(xì)節(jié)詳解,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2020-05-05
  • 重寫hashCode()和equals()方法詳細(xì)介紹

    重寫hashCode()和equals()方法詳細(xì)介紹

    這篇文章主要介紹了重寫hashCode()和equals()方法詳細(xì)介紹,涉及重寫equals()方法,重寫hashCode()方法,重寫equals()而不重寫hashCode()的風(fēng)險(xiǎn)等相關(guān)內(nèi)容的介紹,具有一定借鑒價(jià)值,需要的朋友可以參考下
    2018-01-01

最新評論

定安县| 台南县| 新河县| 安义县| 鹰潭市| 临沧市| 乾安县| 富源县| 乐陵市| 宁蒗| 东乡县| 锡林浩特市| 建水县| 龙江县| 昭觉县| 岳池县| 余庆县| 紫云| 铁岭市| 东阳市| 龙岩市| 连云港市| 共和县| 镇沅| 比如县| 黔西县| 济阳县| 海城市| 金阳县| 会理县| 遂昌县| 昌吉市| 邵东县| 清流县| 平顶山市| 高淳县| 澄城县| 宝应县| 靖江市| 墨脱县| 徐汇区|