在使用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
输入JRebel,然后安装即可:
3.安装完成之后重启IDEA
依次选择 Help->JRebel->Activcation
选择第二项,用license激活,这里的Activcation code在你注册完myJRebel之后可以找到:
4.激活完成后,右击项目根目录
自动添加rebel.xml文件
5.好了,到此基本完成,点击rebel图标启动工程即可,后面修改的代码会实时部署,不需要再重启。
最后帮朋友打个小广告