springCache註解詳解

2021-10-24 12:20:54 字數 2758 閱讀 2974

1、首先springcache需要匯入一下依賴:

org.springframework.boot

spring-boot-starter-cache

2.1、@cacheable:

2.1.1 @cacheable 屬性:

cacheable 將方法的執行結果進行快取;以後再要相同資料,直接找快取中獲取,不用再呼叫方法。

cachemananger:管理多個cache元件,對快取的真正crud操作在cache元件中,每乙個快取元件都有自己唯一的乙個名字

屬性說明:

cachenames/value: 指定快取元件的名字(即放到哪幾個快取中),是陣列的方式,可以指定多個

key: 快取資料使用的key,可以用他指定,預設使用方法引數的值(可以使用spel表示式,如#id,就是引數id的值)

keygenerator: key的生成器,可以自己指定key的生成器的元件id

(key和keygenerator二選一)

cachemanager: 指定快取管理器 或者是指定快取的解析器cacheresolver;

condition: 指定符合條件的情況下才快取,指定條件為true才快取

unless: 否定快取(等同於除非),但unless指定的條件為true,方法的返回值就不會被快取;(使用的時候可以獲取到結果進行判斷)

sync: 是否使用非同步模式。

2.1.2 @cacheable 執行流程

1、方法執行之前,先去查詢cache(快取元件),按照cachenames指定的名字獲取;

(cachemanager先獲取相應的快取),第一次獲取快取,如果沒有快取元件會自動建立。

2、去cache中查詢快取中的內容,使用乙個key。預設是方法的引數

(key是根據某種策略生成的,預設使用keygenerator生成,也是 生成key)

******keygenerator生成key預設策略:

如果沒有引數,key = new ******key()

如果有乙個引數,key = 引數的值

如果有多個引數,key = new ******key(params)

3、沒有查到就呼叫目標方法

4、沒有查到快取就呼叫目標方法,將目標方法的結果返回並快取

備註:@cacheable標註的方法執行之前會先去查詢快取中有沒有這個資料,預設是按照引數的值做為key去查詢快取,如果沒有就執行方法,並將返回結果放入快取

2.1.3 核心:

1、使用cachemanage(預設是concurrentmapcachemanager)按照名字得到cache(預設是concurrentmapcache)元件         

2、key是使用keygenerator生成的,預設是******keygenerator生成key

3、獲取快取,沒有則建立快取元件

2.2 、@cacheput

@cacheput 既呼叫方法,又更新快取 修改資料資料庫的同時又更新快取

1、設定需要更新快取元件名

2、設定需要更新的key(這裡要與該快取建立時使用的key生成策略一致,才能對對應更新快取,否則無效),這裡的key可以使用兩種方式:

方式一:使用引數的形式 key = "#department.id"

方式二:使用返回值結果 key = "#result.引數名"

其屬性與@cacheable相關屬性相同

@cacheable 不能使用#result,因為這個是返回結果才能使用,但是@cacheable在執行方法前就要使用key,所以不行  

2.3 、@cacheevict

@cacheevict  清除快取

key: 指定清除資料的key值

cachenames: 指定快取元件名稱

allentries = true: 清除快取元件下的所有資料(預設為false)

beforeinvocation = false: 是否在方法執行前清除快取(預設是在方法執行之後清除快取(即false),在方法執行之後清除快取會出現方法報異常後,快取不會清除)

beforeinvocation =true: 表示在方法執行之前就清除快取,無論方法是否執行成功

2.4 、@caching

@caching 定義複雜的快取規則

如:@caching( cacheable = , put = )

2.5 @cacheconfig

@cacheconfig全域性定義快取元件名、key生成策略、快取管理器、快取解析器

如全域性定義快取元件名:@cacheconfig(cachenames = "department")

Spring Cache常用註解詳解

開啟spring cache框架支援。解析對應的註解,實現快取讀寫訪問 快取配置,可以配置當前型別中所用快取註解的通用資訊 示例 配置當類前所有快取註解的快取字首 cacheconfig cachenames cache prefix 表示要對方法返回值進行快取 註解屬性 示例 執行方法時,返回結果...

spring cache簡單使用

spring從3.1起自帶了cache功能。可以快取乙個方法的返回值,也就是說如果有快取,spring就會直接使用快取值,而不會再去執行這個方法 cashe相關的功能是在spring context.4.2.5.release.jar這個jar包中的。然後,開啟cache註解,配置cachemana...

SpringCache自我學習

cacheable 把查詢出來的資料放到快取 cacheevict 更新 刪除模式 cacheput 更新 雙寫模式 cacheable value是分割槽名 key是快取名 configuration enablecaching 開啟快取 enableconfigurationproperties...