在使用shiro的session存取對(duì)象的時(shí)候,發(fā)現(xiàn)取對(duì)象強(qiáng)轉(zhuǎn)會(huì)失敗,即便是User類(lèi)型轉(zhuǎn)User類(lèi)型也會(huì)失敗屋厘。
出現(xiàn)這種問(wèn)題的原因是這兩個(gè)對(duì)象的ClassLoader不同導(dǎo)致的(如果同一類(lèi)型的對(duì)象的ClassLoader不同芋哭,強(qiáng)制轉(zhuǎn)換也是會(huì)失敗的)紧帕。
比如說(shuō)我使用了spring-boot-devtools這個(gè)依賴(lài)见秽,默認(rèn)啟動(dòng)的時(shí)候會(huì)使用RestartClassLoader這個(gè)ClassLoader類(lèi)加載class愉烙,但是以jar形式引入的class會(huì)使用基礎(chǔ)的ClassLoader(也就是AppClassLoader)加載。
對(duì)于devtools引起的這個(gè)問(wèn)題可參考使用Spring Boot本地啟動(dòng),第三方包無(wú)法修改項(xiàng)目?jī)?nèi)靜態(tài)常量解取,后來(lái)發(fā)現(xiàn)devtools實(shí)在是不太優(yōu)雅步责,轉(zhuǎn)而投奔JRebel了。下面介紹下JRebel在IDEA中的安裝使用禀苦。
1.到myJRebel中注冊(cè)一個(gè)賬號(hào):
2.打開(kāi)IDEA中的設(shè)置頁(yè)面
Preferences->Plugins->Browse repositories
輸入JRebel蔓肯,然后安裝即可:
3.安裝完成之后重啟IDEA
依次選擇 Help->JRebel->Activcation
選擇第二項(xiàng),用license激活振乏,這里的Activcation code在你注冊(cè)完myJRebel之后可以找到:
4.激活完成后蔗包,右擊項(xiàng)目根目錄
自動(dòng)添加rebel.xml文件
5.好了,到此基本完成慧邮,點(diǎn)擊rebel圖標(biāo)啟動(dòng)工程即可调限,后面修改的代碼會(huì)實(shí)時(shí)部署,不需要再重啟误澳。
最后幫朋友打個(gè)小廣告