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

詳解Springboot @Cacheable 注解(指定緩存位置)

 更新時間:2023年09月26日 10:53:18   作者:Myovlmx  
這篇文章主要介紹了詳解Springboot @Cacheable 注解(指定緩存位置),使用? @Cacheable ?注解就可以將運行結(jié)果緩存,以后查詢相同的數(shù)據(jù),直接從緩存中取,不需要調(diào)用方法,需要的朋友可以參考下

一、@Cacheable的作用

1、緩存使用步驟:@Cacheable這個注解,用它就是為了使用緩存的。所以我們可以先說一下緩存的使用步驟:

1、開啟基于注解的緩存,使用 @EnableCaching 標(biāo)識在 SpringBoot 的主啟動類上。

2、標(biāo)注緩存注解即可

 使用  @Cacheable  注解就可以將運行結(jié)果緩存,以后查詢相同的數(shù)據(jù),直接從緩存中取,不需要調(diào)用方法

2、@Cacheable作用:把方法的返回值添加到Ehcache緩存中。

3、常用屬性介紹:

(1)cacheNames/value 用來指定緩存組件的名字,將方法的返回結(jié)果放在哪個緩存中,可以是數(shù)組的方式,支持指定多個緩存

@Cacheable(cacheNames = "streamUrl", key = "#eventId", unless = "#result == null")
// 數(shù)組
@Cacheable(cacheNames = {"streamUrl", "test"}, key = "#eventId", unless = "#result == null")

(2)key:緩存數(shù)據(jù)時使用的 key。默認(rèn)使用的是方法參數(shù)的值??梢允褂?spEL 表達式去編寫。

@Cacheable(cacheNames = "streamUrl", key = "#eventId + '[' + #id + ']'", unless = "#result == null")

(3)keyGenerator:key 的生成器,可以自己指定 key 的生成器,通過這個生成器來生成 key。

@Cacheable(value = "ip", keyGenerator = "cacheKeyGenerator")
public IPResponse query(String ip) {
  return ipAPI.query(ip);
}

這樣放入緩存中的 key 的生成規(guī)則就按照你自定義的 keyGenerator 來生成。不過需要注意的是: @Cacheable 的屬性,key 和 keyGenerator 使用的時候,一般二選一。 

(4)condition:符合條件的情況下才緩存。方法返回的數(shù)據(jù)要不要緩存,可以做一個動態(tài)判斷

// 表示 id 大于 1 才進行緩存
@Cacheable(cacheNames = "streamUrl", condition = "#id > 1")

(5)unless:否定緩存。當(dāng) unless 指定的條件為 true ,方法的返回值就不會被緩存。當(dāng)然你也可以獲取到結(jié)果進行判斷。(通過  #result  獲取方法結(jié)果)

(6)sync:是否使用異步模式。默認(rèn)是方法執(zhí)行完,以同步的方式將方法返回的結(jié)果存在緩存中。

4、spEL 編寫 key

  前面說過,緩存的 key 支持使用 spEL 表達式去編寫,下面總結(jié)一下使用 spEL 去編寫 key 可以用的一些元數(shù)據(jù):

二、@CacheEvict的作用

1、@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。

2、allEntries屬性

  allEntries是boolean類型,表示是否需要清除緩存中的所有元素。默認(rèn)為false,表示不需要。當(dāng)指定了allEntries為true時,清除緩存中的所有元素,Spring Cache將忽略指定的key。

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

3、beforeInvocation屬性

  清除操作默認(rèn)是在對應(yīng)方法成功執(zhí)行之后觸發(fā)的,即方法如果因為拋出異常而未能成功返回時也不會觸發(fā)清除操作。使用beforeInvocation可以改變觸發(fā)清除操作的時間,當(dāng)我們指定該屬性值為true時,Spring會在調(diào)用該方法之前清除緩存中的指定元素

到此這篇關(guān)于@Cacheable 注解(指定緩存位置)的文章就介紹到這了,更多相關(guān)@Cacheable 注解內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • java中文轉(zhuǎn)全拼工具類分享

    java中文轉(zhuǎn)全拼工具類分享

    這篇文章主要介紹了一個JAVA將漢字轉(zhuǎn)換為全拼的工具類,大參考使用吧
    2014-01-01
  • 關(guān)于JDK源碼中的@author unascribed注釋閑談

    關(guān)于JDK源碼中的@author unascribed注釋閑談

    這篇文章主要介紹了關(guān)于JDK源碼中的@author unascribed注釋閑談,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2024-08-08
  • Java并發(fā)編程之CountDownLatch的使用

    Java并發(fā)編程之CountDownLatch的使用

    CountDownLatch是一個倒數(shù)的同步器,常用來讓一個線程等待其他N個線程執(zhí)行完成再繼續(xù)向下執(zhí)行,本文主要介紹了CountDownLatch的具體使用方法,感興趣的可以了解一下
    2023-05-05
  • SpringMVC之返回JSON的三種方式

    SpringMVC之返回JSON的三種方式

    現(xiàn)在都是前后端分離了,后端只需要跟前端提供restful接口,所有接口都返回json格式數(shù)據(jù)即可,SpringMVC通常有3種方式向前端輸出json格式數(shù)據(jù),下面我們就來了解一下
    2023-06-06
  • Java?Stream流常用方法實戰(zhàn)指南

    Java?Stream流常用方法實戰(zhàn)指南

    Stream流是Java 8中的一個新特性,它提供了一種處理集合和數(shù)組的方式,Stream流可以讓我們以一種更加簡潔、高效、可讀性更強的方式來處理數(shù)據(jù),這篇文章主要介紹了Java?Stream流常用方法的相關(guān)資料,需要的朋友可以參考下
    2026-01-01
  • Java操作redis設(shè)置第二天凌晨過期的解決方案

    Java操作redis設(shè)置第二天凌晨過期的解決方案

    這篇文章主要介紹了Java操作redis設(shè)置第二天凌晨過期的解決方案,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-01-01
  • Spring Boot 與 Kotlin 使用Redis數(shù)據(jù)庫的配置方法

    Spring Boot 與 Kotlin 使用Redis數(shù)據(jù)庫的配置方法

    Redis是目前業(yè)界使用最廣泛的內(nèi)存數(shù)據(jù)存儲。下面通過本文給大家介紹Spring Boot 與 Kotlin 使用Redis數(shù)據(jù)庫的配置方法,感興趣的朋友一起看看吧
    2018-01-01
  • Spring中的IOC深度解讀

    Spring中的IOC深度解讀

    這篇文章主要介紹了Spring中的IOC深度解讀,spring容器會創(chuàng)建和組裝好清單中的對象,然后將這些對象存放在spring容器中,當(dāng)程序中需要使用的時候,可以到容器中查找獲取,然后直接使用,需要的朋友可以參考下
    2023-09-09
  • IDEA實現(xiàn)導(dǎo)入module并成功運行

    IDEA實現(xiàn)導(dǎo)入module并成功運行

    這篇文章主要介紹了IDEA實現(xiàn)導(dǎo)入module并成功運行方式,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2023-04-04
  • 詳解SpringCloud新一代網(wǎng)關(guān)Gateway

    詳解SpringCloud新一代網(wǎng)關(guān)Gateway

    SpringCloud Gateway是Spring Cloud的一個全新項目,Spring 5.0+ Spring Boot 2.0和Project Reactor等技術(shù)開發(fā)的網(wǎng)關(guān),它旨在為微服務(wù)架構(gòu)提供一種簡單有效的統(tǒng)一的API路由管理方式
    2021-06-06

最新評論

名山县| 伊通| 眉山市| 新竹市| 容城县| 和田县| 襄垣县| 班玛县| 临洮县| 河池市| 郓城县| 甘南县| 孟津县| 囊谦县| 信阳市| 泉州市| 全椒县| 巍山| 驻马店市| 漳州市| 红原县| 中江县| 行唐县| 宁德市| 胶州市| 喜德县| 九龙坡区| 拉孜县| 肥东县| 咸丰县| 芒康县| 竹山县| 库伦旗| 登封市| 额济纳旗| 义乌市| 松江区| 马鞍山市| 卓尼县| 诏安县| 永宁县|