Spring快取註解

2022-07-27 01:33:13 字數 2931 閱讀 9875

**spring從3.1開始定義了org.springframework.cache.cache和org.springframework.cache.cachemanager介面來統一不同的快取技術,並支援jcache(jsr-107)註解簡化開發**

當配置上redis之後快取註解就會將快取內容儲存在redis內,沒有redis的時候會儲存在spring中

​   1.cache:快取介面,定義快取操作,實現類有rediscache,ehcache,concurrentmapcache 等

​   2.cachemanager:快取管理器,管理各種快取元件

​   3.@cacheable :主要針對方法配置,能夠根據方法的請求引數對其結果進行快取

​   4.@cacheput :在方法被呼叫的時候將結果快取

​ 5.@cacheevict :清空快取

​   6.@enablecaching:開啟基於註解的快取

​   7.keygenerator:快取資料時key生成的策略

​   8.serialize:快取資料時value序列話策略

@cacheable可以標記在乙個方法上,也可以標記在乙個類上,標記在方法上時表示這個方法是支援快取的,標記在類上表示這個類中所有的方法都支援快取

spring會在其被呼叫後**將其返回值快取起來**,以保證下次利用同樣的引數來執行該方法時可以直接從快取中獲取結果,而不需要再次執行該方法

spring在快取方法的返回值時是**以鍵值對進行快取的**,值就是方法的返回結果,至於鍵的話,spring又支援兩種策略,預設策略和自定義策略

**當乙個支援快取的方法在物件內部被呼叫時是不會觸發快取功能的**

1.1@cacheable的cachenames/value屬性

​     cachenames屬性是必須指定的,其表示當前方法的返回值是會被快取在哪個cache上的,對應cache的名稱。其可以是乙個**cache也可以是多個cache**,**當需要指定多個cache時其是乙個陣列**

@cacheable(cachenames="cache1")

public

string sc()

@cacheable(cachenames=)

public

string sc()

1.2@cacheable的key屬性

key屬性是用來指定spring快取方法的返回結果時對應的key的。該屬性支援springel表示式。當我們沒有指定該屬性時,spring將使用預設策略生成key

自定義策略是指我們可以通過spring的el表示式來指定我們的key。這裡的el表示式可以使用方法引數及它們對應的屬性。使用方法引數時我們可以直接**使用「#引數名」或者「#p引數index」**

1.設定為當前方法名:#root.methodname

2.當前被呼叫的目標物件:#root.target

3.當前被呼叫用的目標物件:#root.targetclass

4.當前方法中的物件:#root.args[0]

5.自定義key

@cacheable(value="cache1",key="#id") //

這個是宣告了乙個id

public

string sc()

@cacheable(value="cache1",key="#p0")//

這個相當於設定的下標

public

string sc()

@cacheable(value="cahae1",key="#id.aa")//

這個相當於物件的乙個屬性

1.3 condition:當滿足條件時進行快取

@cacheable(condition="i>0")

public

void sc(int

i)

1.4 unless :當滿足條件時不進行快取

@cacheable(unless= "#result == null")

public

int sc(int

i)

可以使用#result來呼叫返回值在使用@cachput註解的時候要設定和查詢方法一樣的key,不然當進行修改的時候修改成功但是key不同他會查不到

@cachable(value=,key="#id")

public

result select(string id)

@cachput(value=,key="#root.args[0].id")

public

result update(user user)

這樣的話兩個key是一樣的,刪除也是同理4.1根據key刪除

@cacheevict(value="test",key="#id")//

這個是根據key刪除

public

result delete(string id)

4.2刪除全部(預設關閉)

@cacheevict(value="test",allentries=true

)     

public

void

delete(string id)

Spring快取註解

快取註解有以下三個 cacheable cacheevict cacheput 1 cacheable value accountcache 這個注釋的意思是,當呼叫這個方法的時候,會從乙個名叫 accountcache 的快取中查詢,如果沒有,則執行實際的方法 即查詢資料庫 並將執行的結果存入快取...

Spring快取註解 Cacheable

cacheable可以標記在乙個方法上,也可以標記在乙個類上。當標記在乙個方法上時表示該方法是支援快取的,當標記在乙個類上時則表示該類所有的方法都是支援快取的。對於乙個支援快取的方法,spring會在其被呼叫後將其返回值快取起來,以保證下次利用同樣的引數來執行該方法時可以直接從快取中獲取結果,而不需...

Spring快取註解 Cacheable

cacheable cacheable 的作用 主要針對方法配置,能夠根據方法的請求引數對其結果進行快取 cacheable 作用和配置方法 引數解釋 example value 快取的名稱,在 spring 配置檔案中定義,必須指定至少乙個 例如 cacheable value mycache c...