devtools 導致 相同類型強轉失敗

在使用shiro的session存取對象的時候,發現取對象強轉會失敗,即便是User類型轉User類型也會失敗。

出現這種問題的原因是這兩個對象的ClassLoader不同導致的(如果同一類型的對象的ClassLoader不同,強制轉換也是會失敗的)。

比如說我使用了spring-boot-devtools這個依賴,默認啟動的時候會使用RestartClassLoader這個ClassLoader類加載class,但是以jar形式引入的class會使用基礎的ClassLoader(也就是AppClassLoader)加載。

對于devtools引起的這個問題可參考使用Spring Boot本地啟動,第三方包無法修改項目內靜態常量,后來發現devtools實在是不太優雅,轉而投奔JRebel了。下面介紹下JRebel在IDEA中的安裝使用。

1.到myJRebel中注冊一個賬號:

myJRebel

2.打開IDEA中的設置頁面

Preferences->Plugins->Browse repositories

屏幕快照 2017-07-21 下午4.33.26.png
屏幕快照 2017-07-21 下午4.33.17.png

輸入JRebel,然后安裝即可:

3.安裝完成之后重啟IDEA

依次選擇 Help->JRebel->Activcation
選擇第二項,用license激活,這里的Activcation code在你注冊完myJRebel之后可以找到:

屏幕快照 2017-07-21 下午4.20.58.png

4.激活完成后,右擊項目根目錄

自動添加rebel.xml文件


屏幕快照 2017-07-21 下午4.35.50.png
5.好了,到此基本完成,點擊rebel圖標啟動工程即可,后面修改的代碼會實時部署,不需要再重啟。
屏幕快照 2017-07-21 下午4.38.25.png

最后幫朋友打個小廣告

一個有趣的迷你小程序

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容