前言
今天在項目啓用了ehcache緩存,但是某些方法使用緩存後不能正確的返回數據,拋出了類型轉換異常,找了一番資料後發現是緩存的key生成策略問題,在此將此問題及解決辦法記錄一下。
spring cache緩存的key
spring cache緩存的key默認是通過KeyGenerator生成的,其默認生成策略如下:
- 如果方法沒有參數,則使用0作爲key。
- 如果只有一個參數的話則使用該參數作爲key。
- 如果參數多餘一個的話則使用所有參數的hashCode作爲key。
可以看出默認的key生成策略中並沒有涉及方法名稱和類,這就意味着如果我們有兩個參數列表相同的方法,我們用相同的參數分別調用兩個方法,當調用第二個方法的時候,