在使用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中注冊一個賬號:
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
最后幫朋友打個小廣告