問題現象如下:
壹個搞笑的問題,同壹個類型也有類型轉換錯誤。
項目中的使用情況如下:
緩存配置
緩存使用
緩存使用場景
讓我們把上面的錯誤分離出來。
對於這個問題,網上也有人遇到過,但都說spring-boot devtools工具有什麽問題,挺可笑的。我沒有使用這個devtools工具,但在閱讀了在線分析後,我可以得出以下結論:
當緩存將數據放入緩存時,它使用默認的序列化方法(JDK serialization releaserializer),該方法使用二進制文件保存對象的上下文類加載器,但由於devtools而重新啟動服務,然後重新啟動後類加載器和原始類加載器不是同壹個對象。因此,對象的類別是不同的。雖然它們看起來都像User,但它們是不同的類型,因為它們的類不相等。
這太荒謬了。我把數據放在緩存中,然後服務器重新啟動,然後我就不能使用它了。那這個緩存有什麽用呢?
解決辦法
這個問題肯定和序列化有關。讓我們指定緩存值的序列化方法並通過json序列化對象。配置類的轉換如下:
重新啟動服務,緩存讀取的反序列化對象,即可正常使用。
搞定了。!!