shiro缓存管理时报错java.lang.ClassCastException: com.xxx.User cannot be cast to com.xxx.User
生活随笔
收集整理的這篇文章主要介紹了
shiro缓存管理时报错java.lang.ClassCastException: com.xxx.User cannot be cast to com.xxx.User
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
一、異常
java.lang.ClassCastException: com.px.myshiro.domain.User cannot be cast to com.px.myshiro.domain.User- 問題
user不能轉換為user,分明就是同一個user,怎么可能不能轉換呢?需要轉換嗎?
- 分析
這主要發生在緩存服務時。主要原因是:同一個類被不同的加載器加載
當對象序列化到緩存中時,我們假設此時的類加載器為C1。
當代碼發生改變時,會有另一個加載器,我們稱它為C2。
當你調用緩存中的方法時,緩存抽象會在緩存中找到一個條目,并從緩存中進行反序列化,如果沒有考慮上下文的類加載器,那么,這個對象就會被賦予錯誤的加載器。
- 解決方案一:如果你沒有看懂我寫的什么,或者你不需要熱部署,可以在pom.xml文件中把spring-boot-devtools依賴注釋了;
- 解決方案二:PropertyUtils.copyProperties(to,from);
二、如何在IDEA中設置熱部署
pom.xml中添加
<dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-devtools</artifactId><optional>true</optional> </dependency><plugin><groupId>org.springframework.boot</groupId><artifactId>spring-boot-maven-plugin</artifactId><configuration><fork>true</fork></configuration> </plugin>在Eclipse中,默認自動編譯,但在IDEA中,需要設置,具體步驟如下:
如果不行,Shift+Ctrl+Alt+/,選擇Registry
進去之后,找到如下圖所示的選項,打勾
總結
以上是生活随笔為你收集整理的shiro缓存管理时报错java.lang.ClassCastException: com.xxx.User cannot be cast to com.xxx.User的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 从微信的改版中我看到了微信的焦虑
- 下一篇: 2020年有赞云生态发展白皮书