spring使用 Cache的簡單實現

2022-02-22 09:07:40 字數 1626 閱讀 9507

基於xml的配置感覺沒有註解形式簡單明瞭,咱不考慮了。

進入正題之前先提個疑問,希望知道的人能告訴一下

下述介紹會有這段**:

@cacheable(value="mycache", key="'get'+#userno")  

public string get(string userno)

//將查詢到的資料快取到mycache中,並使用方法名稱加上引數中的userno作為快取的key

//通常更新操作只需重新整理快取中的某個值,所以為了準確的清除特定的快取,故定義了這個唯一的key,從而不會影響其它快取值

@cacheable(value="

mycache

", key="

'get'+#userno

")

public string get

(string userno)

@cacheevict(value="

mycache

", key="

'get'+#userno

")

public

void

update(string userno)

//allentries為true表示清除value中的全部快取,預設為false

@cacheevict(value="

mycache

", allentries=true

)

public

void

removeall()

}

view code

上述參考文章沒有講到的部分知識點,從@參考文章2

找了些資料做補充

@caching註解可以讓我們在乙個方法或者類上同時指定多個spring cache相關的註解。其擁有三個屬性:cacheable、put和evict,分別用於指定@cacheable、@cacheput和@cacheevict。

@caching(cacheable = @cacheable("

users

"), evict = )

public

user find(integer id)

在支援spring cache的環境下,對於使用@cacheable標註的方法,spring在每次執行前都會檢查cache中是否存在相同key的快取元素,如果存在就不再執行該方法,而是直接從快取中獲取結果進行返回,否則才會執行並將返回結果存入指定的快取中。@cacheput也可以宣告乙個方法支援快取功能。與@cacheable不同的是使用@cacheput標註的方法在執行前不會去檢查快取中是否存在之前執行過的結果,而是每次都會執行該方法,並將執行結果以鍵值對的形式存入指定的快取中。

@cacheput也可以標註在類上和方法上。使用@cacheput時我們可以指定的屬性跟@cacheable是一樣的。

@cacheput(

"users

")//

每次都會執行方法,並將結果存入指定的快取中

public

user find(integer id)

view code

上述2步驟後,就可以愉快的使用了!~

spring快取cache的使用

在spring配置檔案中新增schema和spring對快取註解的支援 xmlns xmlns aop xmlns xsi xmlns mvc xmlns context xmlns tx xmlns p xmlns cache xsi schemalocation spring beans 3.0...

spring的Cache註解和redis的區別

1 不支援ttl,即不能設定過期時間 expires time,springcache 認為這是各個cache實現自己去完成的事情,有方案但是只能設定統一的過期時間,明顯不夠靈活。2 內部呼叫,非 public 方法上使用註解,會導致快取無效。內部呼叫方法的時候不會呼叫cache方法。由於 spri...

spring 3 1中的cache小結

spring 3.1中有cache了,下面結合目前網上的一些資料和手冊的歸納總結下 1 cache註解 在3.1中,都是用註解的了,cacheable註解可以用在方法或者類級別。當他應用於方法級別的時候,就是如上所說的快取返回值了。當應用在類級別的時候,這個類的所有方法的返回值都將被快取。cache...