Spring快取註解

2021-07-07 04:08:15 字數 3474 閱讀 8380

快取註解有以下三個:

@cacheable      @cacheevict     @cacheput

1、@cacheable(value=」accountcache」),這個注釋的意思是,當呼叫這個方法的時候,會從乙個名叫 accountcache 的快取中查詢,如果沒有,則執行實際的方法(即查詢資料庫),並將執行的結果存入快取中,否則返回快取中的物件。這裡的快取中的 key 就是引數 username,value 就是 account 物件。「accountcache」快取是在 spring*.xml 中定義的名稱。

/**

* 通過token獲取登陸資訊

* * @param token

* @return

*/@cacheable(value = "doctorlogincache", key = "#token")

public logindoctor getlogin(string token)

2、@cacheput注釋,這個注釋可以確保方法被執行,同時方法的返回值也被記錄到快取中,實現快取與資料庫的同步更新。

/**

* 通過token加入醫生登陸資訊到快取

* * @param logindoctor

* @return

*/@cacheput(value = "doctorlogincache", key = "#logindoctor.gettoken()")

public logindoctor addlogindoctor(logindoctor logindoctor)

3、@cacheevict注釋來標記要清空快取的方法,當這個方法被呼叫後,即會清空快取。注意其中乙個 @cacheevict(value=」accountcache」,key=」#account.getname()」),其中的 key 是用來指定快取的 key 的,這裡因為我們儲存的時候用的是 account 物件的 name 字段,所以這裡還需要從引數 account 物件中獲取 name 的值來作為 key,前面的 # 號代表這是乙個 spel 表示式,此表示式可以遍歷方法的引數物件,具體語法可以參考 spring 的相關文件手冊。

/**

* 移除失效的快取通過token

* * @param token

*/@cacheevict(value = "doctorlogincache", key = "#token")

public void removelogin(string token) {}

/** * 清空所有快取

* * @param token

*/@cacheevict(value = "doctorlogincache", allentries = true)

public void removealllogin() {}

@cacheable、@cacheput、@cacheevict 注釋介紹

通過上面的例子,我們可以看到 spring cache 主要使用兩個注釋標籤,即 @cacheable、@cacheput 和 @cacheevict,我們總結一下其作用和配置方法。

1. @cacheable 作用和配置方法

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

@cacheable 主要的引數

value:快取的名稱,在 spring 配置檔案中定義,必須指定至少乙個

例如:@cacheable(value=」mycache」) 或者 @cacheable(value=)

key:快取的 key,可以為空,如果指定要按照 spel 表示式編寫,如果不指定,則預設按照方法的所有引數進行組合

例如:@cacheable(value=」testcache」,key=」#username」)

condition:快取的條件,可以為空,使用 spel 編寫,返回 true 或者 false,只有為 true 才進行快取

例如:@cacheable(value=」testcache」,condition=」#username.length <= 6」

2. @cacheput 作用和配置方法

@cacheput 的作用 主要針對方法配置,能夠根據方法的請求引數對其結果進行快取,和 @cacheable 不同的是,它每次都會觸發真實方法的呼叫

@cacheput 主要的引數

value:快取的名稱,在 spring 配置檔案中定義,必須指定至少乙個

例如:@cacheable(value=」mycache」) 或者 @cacheable(value=)

key:快取的 key,可以為空,如果指定要按照 spel 表示式編寫,如果不指定,則預設按照方法的所有引數進行組合

例如:@cacheable(value=」testcache」,key=」#username」)

condition:快取的條件,可以為空,使用 spel 編寫,返回 true 或者 false,只有為 true 才進行快取

例如:@cacheable(value=」testcache」,condition=」#username.length()>2」)

3. @cacheevict 作用和配置方法

@cachevict 的作用 主要針對方法配置,能夠根據一定的條件對快取進行清空

@cacheevict 主要的引數

value

快取的名稱,在 spring 配置檔案中定義,必須指定至少乙個

例如:@cachevict(value=」mycache」) 或者 

@cachevict(value=

key:快取的 key,可以為空,如果指定要按照 spel 表示式編寫,如果不指定,則預設按照方法的所有引數進行組合

例如:@cachevict(value=」testcache」,key=」#username」)

condition:快取的條件,可以為空,使用 spel 編寫,返回 true 或者 false,只有為 true 才清空快取

例如:@cachevict(value=」testcache」,condition=」#username.length()>2」)

allentries:是否清空所有快取內容,預設為 false,如果指定為 true,則方法呼叫後將立即清空所有快取

例如:@cachevict(value=」testcache」,allentries=true)

beforeinvocation:是否在方法執行前就清空,預設為 false,如果指定為 true,則在方法還沒有執行的時候就清空快取,預設情況下,如果方法執行丟擲異常,則不會清空

例如:@cachevict(value=」testcache」,beforeinvocation=true)

Spring快取註解

spring從3.1開始定義了org.springframework.cache.cache和org.springframework.cache.cachemanager介面來統一不同的快取技術,並支援jcache jsr 107 註解簡化開發 當配置上redis之後快取註解就會將快取內容儲存在re...

Spring快取註解 Cacheable

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

Spring快取註解 Cacheable

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