關於 Cacheable的使用以及內部呼叫失效問題

2021-10-13 21:35:11 字數 1377 閱讀 9098

例子:

@cacheable(value = "test", key = "#root.args[0]+':'+#root.args[1]", sync = true)

public string gettest(integer userid,string username)

@cacheable引數說明,value自定義,key也可以自定義,要是想關聯到傳入的引數就用"#root.args[0]"或者"#引數命"關聯入參;sync是同步預設不開啟;

如果可以連到redis操作工具的,直接工具檢視,如果沒有,用命令"get test::(userid的值):(username的值)",需要注意的是,在註解的key引數出咱們自己寫的是乙個":"拼接,但是註解會給你拼接兩個"::"在註解的value引數和key引數之間

@cacheable註解,註解在service上的乙個方法時發現失效,沒有存到redis裡。

@cacheable是基於spring aop**類,內部方法呼叫是不走**的,所以@cacheable在這裡不起作用;

啟動類加註解

@enableaspectjautoproxy(proxytargetclass = true, exposeproxy = true)
方法內處理

@override

public string getprogrambyinfoid(integer userid, string username)

@cacheable(value = "gettest", key = "#userid+':'+#username", sync = true)

public integer getsubscribeisenable(integer userid,string username)

@component

public class testbiz

}

@autowired

private testbiz testbiz;

@override

public string getprogrambyinfoid(integer userid, string username)

當資料庫查詢到的結果為null時,不需要快取,這個需要配置一下@cacheable(value = "gettest", key = "#userid+':'+#username",unless="#result==null")

unless和sync好像不能同時存在,我單獨加沒問題,兩個一起加結果為null的時候會報錯,這塊有大佬歡迎指教。

Cacheable的使用總結

cacheable的使用總結 cacheable value person key tagid zz public listgetpersonbytagid long tagid,string zz 其中value表示該方法返回的引數的快取存在那個cache裡 即為快取塊的名字 快取結果以乙個鍵值對...

Cacheable 簡單使用

cacheable 註解在方法上,表示該方法的返回結果是可以快取的。也就是說,該方法的返回結果會放在快取中,以便於以後使用相同的引數呼叫該方法時,會返回快取中的值,而不會實際執行該方法。使用方法 cacheable value cacheconstants.user info,key userid ...

Cacheable的幾個屬性

cachenames value 指定快取元件的名字 將方法的返回結果放在哪個快取中,是陣列的方式,可以指定多個快取 key 快取資料使用的key 可以用它來指定。預設是使用方法引數的值1 方法的返回值 編寫spel id 引數id的值 a0 p root.args e keygenerator k...