踩坑发现bug之解决springRemoteRestart不起作用
springDevTools提供了热部署的工具,按照网上的教程本地可以完美的支持热部署,但是一用到远程热部署(remoteRestart)就失效,热部署失败,抛ClassCastException异常为了解决这个问题,咱们今天分析一下他的原理,为什么本地可以热部署,远程热部署就会抛异常
技术栈:springBoot + MVC + DUBBO + NACOS + maven打包插件spring-boot-maven-plugin
热部署原理分析当我们修改class时,springDevTools利用了不同的classLoader重新加载class,并重新启动spring,使其生效优点就是已经加载过的class并不会重新加载以便节省性能,只针对动态修改的class重新加载即可
已加载的class无法在线卸载,只能用新的classLoader去加载,这样就起到了热部署的效果旧的classLoader以及对应加载过的class会被GC回收
在springBoot启动的时候,监听启动时的事件,然后用自己的热部署classLoader去重新启动spring(通过反射再次 ...