當前位置:成語大全網 - 書法字典 - Spring-boot緩存redis類型轉換錯誤。

Spring-boot緩存redis類型轉換錯誤。

最近,在使用spring-boot的緩存功能時,出現了壹個奇妙的問題。

問題現象如下:

壹個搞笑的問題,同壹個類型也有類型轉換錯誤。

項目中的使用情況如下:

緩存配置

緩存使用

緩存使用場景

讓我們把上面的錯誤分離出來。

對於這個問題,網上也有人遇到過,但都說spring-boot devtools工具有什麽問題,挺可笑的。我沒有使用這個devtools工具,但在閱讀了在線分析後,我可以得出以下結論:

當緩存將數據放入緩存時,它使用默認的序列化方法(JDK serialization releaserializer),該方法使用二進制文件保存對象的上下文類加載器,但由於devtools而重新啟動服務,然後重新啟動後類加載器和原始類加載器不是同壹個對象。因此,對象的類別是不同的。雖然它們看起來都像User,但它們是不同的類型,因為它們的類不相等。

這太荒謬了。我把數據放在緩存中,然後服務器重新啟動,然後我就不能使用它了。那這個緩存有什麽用呢?

解決辦法

這個問題肯定和序列化有關。讓我們指定緩存值的序列化方法並通過json序列化對象。配置類的轉換如下:

重新啟動服務,緩存讀取的反序列化對象,即可正常使用。

搞定了。!!