例子:
@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...