1、首先springcache需要匯入一下依賴:
org.springframework.bootspring-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...